在不打开任何文件的情况下,打开Rstudio时会出现以下错误:
“错误:尝试使用零长度变量名”
我的所有命令都被忽略了(即什么也不发生,没有警告,而且R对我所做的任何事情都没有响应),我尝试了rm和gc选项,使它们没有可用性,并且更新到了Rstudio和R的最新版本,但我仍然得到了这个错误。
我正在运行windows 7(64位)。
发布于 2015-12-08 22:29:02
我在dplyr github页面上发布了一个问题。我可以使用下面的代码再现结果。这与csv是否包含没有头的行名列有关。read_csv和read.csv以不同的方式处理这一问题,从而产生了与filter不同的结果。
--首先是工作时的情况
write_csv到read_csv或read.csv;两者都可以与filter一起工作。
library(readr)
library(dplyr)
mtcars %>% write_csv("~/Desktop/test.csv")
test_r <-  read_csv("~/Desktop/test.csv") %>% filter(hp>100)
test.r <-  read.csv("~/Desktop/test.csv") %>% filter(hp>100)现在用于当它失败时,
当通过像write.csv这样的进程生成csv时,除非person将row.names的默认值更改为FALSE,否则它引入了行名w/o的列--一个标头。当读取回数据时,read_csv不会填充行名所在的标题,但是read.csv会计算X。因此,当filter处理read.csv导入时,它有所有带有填充单元格的标头,但是read_csv后的filter有一个空的标题单元格,至少行名在哪里。
以下代码应在test1_r %>% filter(hp>100)后出现错误,并出现以下错误
Error in filter_impl(.data, dots) : 
  attempt to use zero-length variable name同样,最大的不同是write.csv是如何产生csv的。
mtcars %>% write.csv("~/Desktop/test1.csv")
test1_r <- read_csv("~/Desktop/test1.csv")
test1_r %>% str() 
#should fail here
test1_r %>% filter(hp>100)
test1.r <- read.csv("~/Desktop/test1.csv")
test1.r %>% str() 
test1.r %>% filter(hp>100)要解决这个问题,您可以使用@hackR前面提到的read.csv。或者,当您知道csv的行为如下所示时,也可以将第一列子集出来:
test1_r <- read_csv("~/Desktop/test1.csv")[-1]或者,如果您控制csv创建步骤,则可以将选项row.names=FALSE添加到write.csv。
mtcars %>% write.csv("~/Desktop/test2.csv", row.names = FALSE)
test2.r <- read_csv("~/Desktop/test2.csv")
test2.r %>% str() 
test2.r%>% filter(hp>100)或者如上面所示使用write_csv。
发布于 2015-10-29 20:11:13
我收到了同样的错误消息,它与Hadley的readr包中的read_csv()相关。如果我这么做了
cyt <- read_csv(fil)
cyt2 <- cyt %>% filter(EPID == 10030001)然后,我得到了错误消息"Error in filter_impl(.data,dots):尝试使用零长度变量名“。但是,如果我使用了类似的基read.csv()函数,那么它就正常工作了。
cyt <- read.csv(fil, stringsAsFactors = FALSE)
cyt2 <- cyt %>% filter(EPID == 10030001)我认为这可能是read_csv()中的一个bug,也可能是我误用了read_csv()。
在您的特定情况下,可能在加载RStudio时某些东西会自动运行。
发布于 2019-09-13 02:01:59
将此作为可见性的答案:如果您试图通过选择Rmd中的所有内容并按enter,就像使用普通的R脚本那样运行,就会发生这种情况。RStudio试图以R代码的形式运行这些代码,包括标记部分,从而导致您看到的错误。
您可以通过单击绿色播放按钮或在Rmd编辑器顶部的下拉列表中选择一个run选项来运行单个块来避免这种情况。
Try run all from RUN dropdown
https://stackoverflow.com/questions/31385976
复制相似问题