r - 错误 - 替换有 [x] 行,数据有 [y]

标签 r dataframe

我在数据帧(“df”)中有一个数字列(“value”),我想根据“value”生成一个新列(“valueBin”)。我有以下条件代码来定义 df$valueBin:

df$valueBin[which(df$value<=250)] <- "<=250"
df$valueBin[which(df$value>250 & df$value<=500)] <- "250-500"
df$valueBin[which(df$value>500 & df$value<=1000)] <- "500-1,000"
df$valueBin[which(df$value>1000 & df$value<=2000)] <- "1,000 - 2,000"
df$valueBin[which(df$value>2000)] <- ">2,000"

我收到以下错误:

"Error in $<-.data.frame(*tmp*, "valueBin", value = c(NA, NA, NA, : replacement has 6530 rows, data has 6532"

df$value 的每个元素应该适合我的 which() 之一声明。 df$value 中没有缺失值。尽管即使我只运行第一个条件语句(<=250),我也会得到完全相同的错误,"...replacement has 6530 rows..."尽管值 <=250 的记录少于 6530 条,并且值永远不会是 NA。

这个SO链接指出使用aggregate()时出现类似的错误是一个错误,但它建议安装我拥有的R版本。另外,错误报告称其已修复。 R aggregate error: "replacement has <foo> rows, data has <bar>"

这个 SO 链接似乎与我的问题更相关,这里的问题是他/她的条件逻辑问题,导致生成的替换数组元素较少。我想这也一定是我的问题,一开始我想我必须有一个“<=”而不是“<”,反之亦然,但检查后我很确定它们都是正确的,涵盖了每个值“值”没有重叠。 R error in '[<-.data.frame'... replacement has # items, need #

最佳答案

@akrun 的回答确实有效。对于 future 想要了解原因的 Google 用户,这里有一个解释...

需要首先创建新变量。

变量“valueBin”必须已存在于 df 中才能使条件赋值起作用。本质上,代码的语法是正确的。只需在代码 chunk 前面添加一行即可创建此名称 --

df$newVariableName <- NA

然后你继续使用你拥有的任何条件分配规则,例如

df$newVariableName[which(df$oldVariableName<=250)] <- "<=250"

我责怪编写该包错误消息的人...该错误消息使调试变得特别困惑。 df 中有两个长度不同的数组是不相关的信息。不需要。只需先创建新列即可。更多详情请引用这篇文章https://www.r-bloggers.com/translating-weird-r-errors/

关于r - 错误 - 替换有 [x] 行,数据有 [y],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29814912/

相关文章:

r - 如何从 Rnw Sweave 文件中提取所有代码块?

r - 使用data.table按组抽样而不重复

r - 创建新的数据框列

R:将 lapply 与数据框和自定义函数结合使用

r - R中数据框中的平均列

python - 逗号分隔值文件的列值中的逗号 - python 读取问题

python-3.x - 为 Pandas 中的每个组填充缺失的日期和回填值

python - 从带注释的文本中提取多词表达式

r - 在R中查找两组点(纬度和经度)点之间的最短距离

r - 在大型数据库中的 R 中创建列