R Lappy将列表中的指定矩阵元素转换为NA

R Lappy将列表中的指定矩阵元素转换为NA,r,matrix,lapply,R,Matrix,Lapply,我有一个矩阵列表(玩具示例): x这是有效的 l_na <- lapply(l, function(x) { x[(x >= 11)] <- NA; x }) l_na ##[[1]] ## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] ##[1,] 1 3 5 7 9 NA NA NA NA NA ##[2,] 2 4 6 8 10

我有一个矩阵列表(玩具示例):

x这是有效的

l_na <- lapply(l, function(x) { x[(x >= 11)] <- NA; x })
l_na

##[[1]]
##     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
##[1,]    1    3    5    7    9   NA   NA   NA   NA    NA
##[2,]    2    4    6    8   10   NA   NA   NA   NA    NA
##
##[[2]]
##     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
##[1,]    1    3    5    7    9   NA   NA   NA   NA    NA
##[2,]    2    4    6    8   10   NA   NA   NA   NA    NA
l_na=11)]这是可行的

l_na <- lapply(l, function(x) { x[(x >= 11)] <- NA; x })
l_na

##[[1]]
##     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
##[1,]    1    3    5    7    9   NA   NA   NA   NA    NA
##[2,]    2    4    6    8   10   NA   NA   NA   NA    NA
##
##[[2]]
##     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
##[1,]    1    3    5    7    9   NA   NA   NA   NA    NA
##[2,]    2    4    6    8   10   NA   NA   NA   NA    NA

l_na=11)]我们可以使用
replace

l_na <- lapply(l, function(x) replace(x, x>=11, NA))
l_na
#[[1]]
#     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#[1,]    1    3    5    7    9   NA   NA   NA   NA    NA
#[2,]    2    4    6    8   10   NA   NA   NA   NA    NA

#[[2]]
#     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#[1,]    1    3    5    7    9   NA   NA   NA   NA    NA
#[2,]    2    4    6    8   10   NA   NA   NA   NA    NA

我们可以使用
替换

l_na <- lapply(l, function(x) replace(x, x>=11, NA))
l_na
#[[1]]
#     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#[1,]    1    3    5    7    9   NA   NA   NA   NA    NA
#[2,]    2    4    6    8   10   NA   NA   NA   NA    NA

#[[2]]
#     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#[1,]    1    3    5    7    9   NA   NA   NA   NA    NA
#[2,]    2    4    6    8   10   NA   NA   NA   NA    NA
l_na <- lapply(l, function(x) replace(x, x>=11, NA))
l_na
#[[1]]
#     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#[1,]    1    3    5    7    9   NA   NA   NA   NA    NA
#[2,]    2    4    6    8   10   NA   NA   NA   NA    NA

#[[2]]
#     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#[1,]    1    3    5    7    9   NA   NA   NA   NA    NA
#[2,]    2    4    6    8   10   NA   NA   NA   NA    NA
lapply(l, function(x) x*NA^(x>=11))