我已经尝试过查看其他问题,但没有一个能够达到标准。我试图比较两行,并根据比较的结果在行的末尾的新列中添加一个数字。我正在使用mtcars:
我使用的代码就是这样:
for (i in 1:nrow(mtcars)-1) {
if (mtcars[i,6] > mtcars[i+1,6] ){
mtcars[i,12] = 5
}
}
其中col 12是新列。我收到以下错误消息:
Error in if (mtcars[i, 6] < mtcars[i + 1, 6]) mtcars[i, 12] = 10 : argument is of length zero
不应该有任何空参数,所以我不知道返回null参数是什么以及为什么这是一个问题。
由于 约翰
答案 0 :(得分:2)
查看1:nrow(mtcars)-1
将其与1:(nrow(mtcars)-1)
进行比较
# Note the parens aroud the right-hand-side of ':'
错误来自于尝试取mtcars[0, ]
这将是一个零长度向量,这反过来会弄乱你的if
子句
> 1:nrow(mtcars)-1
[1] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
[25] 24 25 26 27 28 29 30 31
> 1:(nrow(mtcars)-1)
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
[25] 25 26 27 28 29 30 31