R:以矩阵保持矩阵格式更改单元格值

时间:2017-09-06 16:07:18

标签: r matrix apply

我有一个我想改变的矩阵。如果单元格值为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

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题:

testM[testM == 3] = 5

testM[which(testM == 2)] = 5

我不明白为什么你把x推到里面