【问题标题】:R - argument length is zeroR - 参数长度为零
【发布时间】:2014-02-06 07:04:37
【问题描述】:

我尝试查看其他问题,但没有一个完全符合要求。我正在尝试比较两行,并根据比较结果在行尾的新列中添加一个数字。我正在使用 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

不应该有任何空参数,所以我不知道什么是返回空参数以及为什么这是一个问题。

谢谢 约翰

【问题讨论】:

  • 请发布您的数据样本。
  • parentheses 是你的朋友。看1:nrow(mtcars)-1
  • 数据是 mtcars ...它内置在 R 中。

标签: r


【解决方案1】:

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

【讨论】:

  • 以+1 击败我。我可以通过在第 2 行放置 browser() 来添加到我想出的 OP。browser() 是一个很好的程序员朋友。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-10
  • 1970-01-01
  • 2020-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多