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

R:更改矩阵中的单元格值保持矩阵格式,r,matrix,apply,R,Matrix,Apply,我有一个矩阵我想改变。如果一个单元格的值是3,我想把它改为5,这显然简化了我的问题 testM <- matrix(1:10, ncol = 2) 可以,但是testM矩阵没有修改 那么我尝试的是: f <- function(x) if (x == 3) 5 这应该可以解决问题: testM[testM == 3] = 5 或 我不明白为什么你把x放在里面,如果没有矢量化,可能testM[testM==3],因为它只工作长度为1的逻辑向量,所以如果x==3,只有当length

我有一个矩阵我想改变。如果一个单元格的值是3,我想把它改为5,这显然简化了我的问题

testM <- matrix(1:10, ncol = 2)
可以,但是testM矩阵没有修改

那么我尝试的是:

f <- function(x) if (x == 3) 5

这应该可以解决问题:

testM[testM == 3] = 5


我不明白为什么你把x放在里面,如果没有矢量化,可能testM[testM==3],因为它只工作长度为1的逻辑向量,所以如果x==3,只有当lengthx为1时才有意义。为此,您可以使用ifelsex==3,5,x来代替。我的第一个建议相当于josh ulrich对m[m%%3==0]的建议
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
Error in vapply(testM, f, numeric(1)) : values must be length 1,
 but FUN(X[[1]]) result is length 0
testM[testM == 3] = 5
testM[which(testM == 2)] = 5