我知道已经有了一些线索,但是经过那些我无法弄清楚问题可能是什么 - 请原谅我......
我正在尝试运行代码
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 *
我的代码不断抛出错误
矩阵中的警告$ new_column [i]&lt; - which(matrix [i,:number of 要替换的项目不是替换长度的倍数
然而,结果是完全正确的。我试过了
如上所述,结果是正确的,但如果我做的一切正确,我觉得我不应该收到警告信息,所以我真的很感激任何关于如何解决这个问题的建议。
最后,不要问我为什么选择1:b-1当我想从2变为b-1时,我只是看到当我使用2:b-1时,它会在列中开始3 ..
答案 0 :(得分:6)
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)
。
答案 1 :(得分:0)
或如果要创建Y的五个向量,请尝试执行此操作。
set.seed(101)
lambda_j <- rgamma(1000,1,1)
Y <- matrix(NA, nrow=1000, ncol=5)
for (j in 1:ncol(Y)) {
for(i in 1:nrow(Y)) {
Y[,j] <- rpois(1000,lambda_j)
}
}