我有一个我想改变的矩阵。如果单元格值为3,我想将其更改为5(显然是我的问题的简化)
testM <- matrix(1:10, ncol = 2)
首先我认为这很简单
testM[which(x == 3)] = 5
可以做到,但是testM矩阵没有被修改。
然后我尝试的是:
f <- function(x) if (x == 3) 5
如果我写了vapply表达式,那么它们就会出错:
newM <- vapply (testM, f, numeric(1))
newM <- vapply (testM, f, matrix())
newM <- vapply (testM, f, matrix(NA,5,2))
Error in vapply(testM, f, matrix(NA, 5, 2)) : values must be length 10,
but FUN(X[[1]]) result is length 0
R: applying function over matrix and keeping matrix dimensions中提出的解决方案 对我不起作用:
Error in vapply(testM, f, numeric(1)) : values must be length 1,
but FUN(X[[1]]) result is length 0
答案 0 :(得分:1)
这应该可以解决问题:
testM[testM == 3] = 5
或
testM[which(testM == 2)] = 5
我不明白为什么你把x推到里面