我卸载并重新安装了 R 和 RStudio。我安装了 R v.4.2.2 和 RStudio 2022.12.0+353。当我启动新的 R 会话或重新启动会话时,我会在控制台中收到带有错误的消息。
截屏:

当我运行代码时,我的降价似乎没有产生问题,但我想知道这个错误意味着什么。我只使用R编程语言,不使用Python。
coord_cartesian不允许设置每个面的坐标,并且使用其他范围限制往往会在特定的极端产生一条直线。由于我们有广泛变化的 y 范围,我们不能在所有方面设置相同的限制;在绘图之前限制数据与geom_line/ geom_path( /sf/answers/1912385051/ )不太友好,因为插入数据以到达边缘然后插入NAs 以打破上线。(最终,获得所需结果的唯一方法就是这样做,这对于其他数据来说可能有点繁重。)
https://gist.github.com/burchill/d780d3e8663ad15bcbda7869394a348a 中建议了一种解决方法,它以
test_data %>%
ggplot(aes(x=Nsubjects, y = Odds, color=EffectSize)) +
facet_wrap(DataType ~ ExpType, labeller = label_both, scales="free") +
geom_line(size=2) +
geom_ribbon(aes(ymax=Upper, ymin=Lower, fill=EffectSize, color=NULL), alpha=0.2)
Run Code Online (Sandbox Code Playgroud)
在 之前的版本中ggplot2,该要点定义coord_panel_ranges并能够控制每个方面的坐标。两个右侧面应缩小到 1-6(ish) y 轴,以便爆炸置信区间离开屏幕,并允许面主要关注数据的“正常范围”。(注意:这个test_data和这个 vis 不是我的,它取自 gist。虽然我的需求有些相似,但我认为最好留在 gist 的数据和代码的范围内。)
不幸的是,这对我来说现在失败了ggplot2-3.3.0。与最近丢失的 相关的初始错误ggplot2::scale_range,我试图通过对 burchill 代码(使用其他ggplot2:::内部函数)的这种改编来减轻这些错误:
UniquePanelCoords <- ggplot2::ggproto(
"UniquePanelCoords", ggplot2::CoordCartesian,
num_of_panels = 1,
panel_counter = 1,
panel_ranges = …Run Code Online (Sandbox Code Playgroud) 某些调试器允许您在调试器中动态添加断点.R中的功能是否可行?一个例子:
quux <- function(..)
{ # line 1
"line 2"
"line 3"
"line 4"
"line 5"
"line 6"
}
trace("quux", tracer = browser, at = 3)
# [1] "quux"
quux()
# Tracing quux() step 3
# Called from: eval(expr, envir, enclos)
# Browse[1]>
# debug: [1] "line 3"
Run Code Online (Sandbox Code Playgroud)
在调试时,我相信我想在代码中超前.想象一下这个函数有几百行代码,我宁愿不介绍它们.
我希望能够做到这一点,并从当前行跳到下一个有趣的行,但不幸的是它只是继续执行该功能.
# Browse[2]>
trace("quux", tracer = browser, at = 5)
# [1] "quux"
# Browse[2]>
c
# [1] "line 6"
# # (out of the debugger)
Run Code Online (Sandbox Code Playgroud)
trace在调试器中的调用只是将断点添加到原始(全局)函数,如图所示,如果我立即再次调用该函数:
quux()
# Tracing …Run Code Online (Sandbox Code Playgroud) 作为我的一个项目的R工作流程的一部分,我从位于远程服务器上的postgreSQL表中加载数据.
我的代码看起来像这样(匿名凭证).
我首先打开一个到终端远程服务器的ssh连接.
ssh -p Port -L LocalPort:IP:RemotePort servername"
Run Code Online (Sandbox Code Playgroud)
然后我连接到R中的postgres数据库.
# Load the RPostgreSQL package
library("RPostgreSQL")
# Create a connection
Driver <- dbDriver("PostgreSQL") # Establish database driver
Connection <- dbConnect(Driver, dbname = "DBName", host = "localhost", port = LocalPort, user = "User")
# Download the data
Data<-dbGetQuery(Connection,"SELECT * FROM remote_postgres_table")
Run Code Online (Sandbox Code Playgroud)
这种方法工作正常,我可以毫无问题地下载数据.
但是,我想在R中而不是在终端中执行第一步 - 即创建ssh连接.这是我尝试这样做的,伴随着错误.
# Open the ssh connection in R
system("ssh -T -p Port -L LocalPort:IP:RemotePort servername")
# Load the RPostgreSQL package
library("RPostgreSQL")
# Create a connection …Run Code Online (Sandbox Code Playgroud) 在我学习的过程中data.table,我发现了一种我无法优雅地解决的问题.
lm预先:公式的荒谬性是显而易见的,我试图确定这种细微差别是否可以在data.table生态系统中使用关键字或特殊运算符轻松解决.
library(data.table)
mt <- as.data.table(mtcars)
mt[, list(model = list(lm(mpg ~ disp))), by = "cyl"]
# cyl model
# 1: 6 <lm>
# 2: 4 <lm>
# 3: 8 <lm>
mt[, list(model = list(lm(mpg ~ disp + cyl))), by = "cyl"]
# Error in model.frame.default(formula = mpg ~ disp + cyl, drop.unused.levels = TRUE) :
# variable lengths differ (found for 'cyl')
Run Code Online (Sandbox Code Playgroud)
这是因为在块内部,cyl是一个长度为1的向量,而不是像其余值一样的列:
mt[, list(model = { browser(); list(lm(mpg ~ cyl+disp)); …Run Code Online (Sandbox Code Playgroud) 有没有办法以编程方式发现 ODBC 连接的命名参数?
例如,使用“ODBC Driver 17 for SQL Server”,ODBC 数据源管理器(在 Windows 中)允许使用“登录 ID”和“密码”进行身份验证,但是在以编程方式连接时,我们需要分别使用uid=和pwd=。这两个配置点在配置文档(例如https://db.rstudio.com/databases/microsoft-sql-server/)中明确列出,但驱动程序支持的其他几个配置选项较少或不- 记录。
(对于 SQL Server,还有更多文档,包括https://docs.microsoft.com/en-us/sql/connect/odbc/windows/driver-aware-connection-pooling-in-the-odbc-driver-for -sql-server?view=sql-server-ver15,列出了其他几个参数(尽管不是它们可能的值)。这适用于这个驱动程序,但由于此页面尚未针对驱动程序 17 更新,我们必须假设所有选项不变。)
可以通过编程方式了解哪些驱动程序可用,以及哪些预定义数据源可用:
odbc::odbcListDrivers()
# name attribute value
# ...truncated...
# 33 ODBC Driver 17 for SQL Server UsageCount 1
# 34 ODBC Driver 17 for SQL Server APILevel 2
# 35 ODBC Driver 17 for SQL Server ConnectFunctions YYY
# 36 ODBC Driver 17 for SQL Server CPTimeout 60 …Run Code Online (Sandbox Code Playgroud) 我试图排除所有 3 列
billboard %>%
pivot_longer(-artist,-track,-date.entered , names_to = "Week Spent", values_to ="freq",values_drop_na = TRUE)
Run Code Online (Sandbox Code Playgroud) 我使用包“rfm”进行了 rfm 分析。结果在 tibble 中,我似乎无法弄清楚如何将其导出到 .csv。我尝试了下面的参数,但它导出了一个空白文件。
> dim(bmdata4RFM)
[1] 1182580 3
> str(bmdata4RFM)
'data.frame': 1182580 obs. of 3 variables:
$ customer_ID: num 0 0 0 0 0 0 0 0 0 0 ...
$ sales_date : Factor w/ 366 levels "1/1/2018 0:00:00",..: 267 275 286 297 300 301 302 303 304 305 ...
$ sales : num 101541 110543 60932 75472 43588 ...
> head(bmdata4RFM,5)
customer_ID sales_date sales
1 0 6/30/2017 0:00:00 101540.70
2 0 7/1/2017 0:00:00 110543.35
3 0 …Run Code Online (Sandbox Code Playgroud) 我正试图为多级分组箱图保留"空白空间".
set.seed(42)
n <- 100
dat <- data.frame(x=runif(n),
cat1=sample(letters[1:4], size=n, replace=TRUE),
cat2=sample(LETTERS[1:3], size=n, replace=TRUE))
ggplot(dat, aes(cat1, x)) + geom_boxplot(aes(fill=cat2))
Run Code Online (Sandbox Code Playgroud)
如果我强制其中一个组为空:
dat <- subset(dat, ! (cat1 == 'b' & cat2 == 'B'))
table(dat$cat1, dat$cat2)
##
## A B C
## a 9 9 7
## b 8 0 5
## c 13 11 6
## d 11 10 5
ggplot(dat, aes(cat1, x)) + geom_boxplot(aes(fill=cat2))
Run Code Online (Sandbox Code Playgroud)
第二组"b"现在扩展到填补空间.我想要的是:
SO 9818835(强制出现一个空的级别)在顶级工作正常,但我无法弄清楚如何使它适用于第二级别的类别.在scale_x_discrete(...),我尝试设置:
breaks=letters[1:4]breaks=LETTERS[1:3]breaks=list(letters[1:4], LETTERS[1:3]) (刺伤)breaks=NULLbreaks=func在哪里func <- function(x, …突然 ggplot 开始导致错误并冻结我的基本系统重新启动给了我以下信息:“R 会话错误”,“由于意外崩溃,上一个 R 会话异常终止”
我正在使用 RStudio 服务器
为了解决这个问题,我创建了一个新的 VM(windows 10 上的 ubuntu 20.04)升级到 R studio 版本 1.4.1106 我已经升级到 R 4.1 并安装了新的包(tidyverse),这对工作至关重要,但仍然得到一个碰撞。
下面是一个非常简单的测试脚本,失败并出现上面提到的错误 如前所述,这是全新安装
测试脚本
library(tidyverse)
data(iris)
ggplot(iris, aes(Sepal.Length, Petal.Length, colour=Species)) +
geom_point()
Run Code Online (Sandbox Code Playgroud)