我知道已经有一些关于这个的线索,但是通过那些我无法弄清楚问题可能是什么 - 请原谅我..
我正在尝试运行代码
for (i in 1:a){
matrix$new_column[i]<-which(matrix[i,1:b-1]==matrix$col_b[i])
}
我正在尝试的是:
对于a行b列的矩阵,在每一行的第2到b-1列中,找到与b列中包含相同值的那个(总是有这样的值)并写出相应的列号进入 *new_column*
我的代码不断抛出错误
Warning in matrix$new_column[i] <- which(matrix[i, : number of items to replace is not a multiple of replacement length
然而,结果是完全正确的。我试过了
如上所述,结果是正确的,但是我觉得如果我做的一切正确,我不应该收到警告消息,所以我真的很感激关于如何解决这个问题的任何建议。
最后,当我想从 2 转到 b-1 时,不要问我为什么选择 1:b-1,我只是看到当我使用 2:b-1 时,它实际上会从第 3 列开始..
最佳答案
which()
如果有多个匹配项,则可以返回一个向量。例如:
which((1:12)%%2 == 0) # which are even?
是
matrix$col_b[i]
独特的?结果可能看起来仍然正确。注意在这种情况下会发生什么:x <- 1:2
x[1] <- 3:4
x
另外,
1:b-1
没有给你来自 1
的数字至 b - 1
但来自 1
的号码至 b
, 全减 1
:b <- 10
1:b-1
您首先需要括号来强制减法:
1:(b - 1)
.
关于R 要替换的项目数不是替换长度/结果的倍数,但正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22099461/