R 功能“;如果;应用于每个单元格
我正在尝试对R中矩阵的每个单元格执行一个函数。如果单元格>0,我希望每3个单元格添加一个 例如:R 功能“;如果;应用于每个单元格,r,if-statement,matrix,R,If Statement,Matrix,我正在尝试对R中矩阵的每个单元格执行一个函数。如果单元格>0,我希望每3个单元格添加一个 例如: mat <- matrix(data=0:9, nrow=5, ncol=10, byrow=F) mat3 <- apply(mat, MARGIN = 1, FUN= function(mat) if(mat != 0) {mat+3}) mat您不需要任何应用,可以直接使用ifelse: ifelse(mat > 0, mat+3, mat) [,1] [,2]
mat <- matrix(data=0:9, nrow=5, ncol=10, byrow=F)
mat3 <- apply(mat, MARGIN = 1, FUN= function(mat) if(mat != 0) {mat+3})
mat您不需要任何应用,可以直接使用ifelse
:
ifelse(mat > 0, mat+3, mat)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0 8 0 8 0 8 0 8 0 8
[2,] 4 9 4 9 4 9 4 9 4 9
[3,] 5 10 5 10 5 10 5 10 5 10
[4,] 6 11 6 11 6 11 6 11 6 11
[5,] 7 12 7 12 7 12 7 12 7 12
但更快的解决方案是:
mat[mat > 0] <- mat[mat > 0] + 3
mat
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0 8 0 8 0 8 0 8 0 8
[2,] 4 9 4 9 4 9 4 9 4 9
[3,] 5 10 5 10 5 10 5 10 5 10
[4,] 6 11 6 11 6 11 6 11 6 11
[5,] 7 12 7 12 7 12 7 12 7 12
mat[mat>0]0]+3
小地毯
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0 8 0 8 0 8 0 8 0 8
[2,] 4 9 4 9 4 9 4 9 4 9
[3,] 5 10 5 10 5 10 5 10 5 10
[4,] 6 11 6 11 6 11 6 11 6 11
[5,] 7 12 7 12 7 12 7 12 7 12
您不需要任何应用,可以直接使用ifelse
:
ifelse(mat > 0, mat+3, mat)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0 8 0 8 0 8 0 8 0 8
[2,] 4 9 4 9 4 9 4 9 4 9
[3,] 5 10 5 10 5 10 5 10 5 10
[4,] 6 11 6 11 6 11 6 11 6 11
[5,] 7 12 7 12 7 12 7 12 7 12
但更快的解决方案是:
mat[mat > 0] <- mat[mat > 0] + 3
mat
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0 8 0 8 0 8 0 8 0 8
[2,] 4 9 4 9 4 9 4 9 4 9
[3,] 5 10 5 10 5 10 5 10 5 10
[4,] 6 11 6 11 6 11 6 11 6 11
[5,] 7 12 7 12 7 12 7 12 7 12
mat[mat>0]0]+3
小地毯
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0 8 0 8 0 8 0 8 0 8
[2,] 4 9 4 9 4 9 4 9 4 9
[3,] 5 10 5 10 5 10 5 10 5 10
[4,] 6 11 6 11 6 11 6 11 6 11
[5,] 7 12 7 12 7 12 7 12 7 12
我们也可以用
mat + (mat > 0) * 3
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#[1,] 0 8 0 8 0 8 0 8 0 8
#[2,] 4 9 4 9 4 9 4 9 4 9
#[3,] 5 10 5 10 5 10 5 10 5 10
#[4,] 6 11 6 11 6 11 6 11 6 11
#[5,] 7 12 7 12 7 12 7 12 7 12
我们也可以在飞行中使用
mat + (mat > 0) * 3
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#[1,] 0 8 0 8 0 8 0 8 0 8
#[2,] 4 9 4 9 4 9 4 9 4 9
#[3,] 5 10 5 10 5 10 5 10 5 10
#[4,] 6 11 6 11 6 11 6 11 6 11
#[5,] 7 12 7 12 7 12 7 12 7 12