【问题标题】:cbind error Error in data.frame(..., check.names = FALSE) : arguments imply differing number of rows: 0, 1cbind 错误 data.frame(..., check.names = FALSE) 中的错误:参数暗示不同的行数:0、1
【发布时间】:2021-04-23 10:08:08
【问题描述】:

我正在尝试将 cbind 用于不同的值。它说不同的行数。我在下面添加了一个示例。每个计算值应作为列。进一步使用了 rbind

df1<-data.frame()
for(i in 1:5){
  df1<-cbind(df1,i)
}
out:

1 2 3 4 5

输出应该是这样的,创建 5 列

【问题讨论】:

  • 第一次迭代试图 cbind 一个零行的空数据帧。
  • 我正在尝试自动化一个过程,所以空数据框应该 cbind 然后 1 到 5 在 rbind 过程发生后
  • 放例如df1&lt;-data.frame(firstcol=NA) 在循环上方?完成交互后,您可以删除firstcol

标签: r


【解决方案1】:

这可能不是最优雅的解决方案,但它解决了您示例中的问题。 问题是您尝试将数字(i(长度=1)与空数据帧(行数=0)绑定。因此,R 表示行数不匹配。

为了解决这个问题,你必须给 df1 一个初始值(例如 0)。

df1<-data.frame(0)

for(i in 1:5){
  df1 <- df1[[i]] = i
}

然后您可以继续并适当地重命名您的列:

colnames(df1) = c(paste0('col',1:ncol(df1)))

【讨论】:

  • df1 &lt;- df[[i]] = i 这行代码给我错误,请检查一次
  • 有一个错字。我修复了它(“df1”而不是“df”)。
  • Error in (df1 &lt;- df1[[i]]) &lt;- i : could not find function "&lt;-&lt;-" 这就是我得到的
  • 看起来你也有错字“
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-16
  • 1970-01-01
  • 1970-01-01
  • 2021-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多