首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误:尝试使用零长度变量名。

错误:尝试使用零长度变量名。
EN

Stack Overflow用户
提问于 2015-07-13 14:23:35
回答 3查看 58.6K关注 0票数 8

在不打开任何文件的情况下,打开Rstudio时会出现以下错误:

“错误:尝试使用零长度变量名”

我的所有命令都被忽略了(即什么也不发生,没有警告,而且R对我所做的任何事情都没有响应),我尝试了rm和gc选项,使它们没有可用性,并且更新到了Rstudio和R的最新版本,但我仍然得到了这个错误。

我正在运行windows 7(64位)。

EN

Stack Overflow用户

发布于 2015-12-08 22:29:02

我在dplyr github页面上发布了一个问题。我可以使用下面的代码再现结果。这与csv是否包含没有头的行名列有关。read_csvread.csv以不同的方式处理这一问题,从而产生了与filter不同的结果。

--首先是工作时的情况

write_csvread_csvread.csv;两者都可以与filter一起工作。

代码语言:javascript
运行
复制
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)后出现错误,并出现以下错误

代码语言:javascript
运行
复制
Error in filter_impl(.data, dots) : 
  attempt to use zero-length variable name

同样,最大的不同是write.csv是如何产生csv的。

代码语言:javascript
运行
复制
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的行为如下所示时,也可以将第一列子集出来:

代码语言:javascript
运行
复制
test1_r <- read_csv("~/Desktop/test1.csv")[-1]

或者,如果您控制csv创建步骤,则可以将选项row.names=FALSE添加到write.csv

代码语言:javascript
运行
复制
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

票数 10
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31385976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档