我想搜索所有不是NA的结果的数字数组的特定列。我用NA填充了12,12,12 dim阵列然后填充它。现在我想在第12列搜索值,所以一切都不是NA。我确信有可能使用grep()或somethign等价物吗?
谢谢
答案 0 :(得分:2)
以下是3x3x3阵列的示例。选择每个数组的第三列,然后使用NA
查找非is.na()
元素。要返回数组中每个第三维的第三列,我们使用m[,3,]
。这将返回一个二维数组,因此我们可以使用apply来选择非NA元素。不好解释,但这很容易......
# Reproducible data
set.seed(1234)
data <- sample( c( rep( NA , 7 ) , 1:20 ) )
m <- array( data , dim = c(3,3,3) )
#, , 1
#
# [,1] [,2] [,3]
#[1,] NA 8 NA
#[2,] 10 13 NA
#[3,] 9 17 6
#
#, , 2
#
# [,1] [,2] [,3]
#[1,] 3 16 4
#[2,] 5 12 7
#[3,] 2 20 NA
#
#, , 3
#
# [,1] [,2] [,3]
#[1,] NA 1 19
#[2,] 18 14 NA
#[3,] 11 15 NA
# Find non-NA elements in third column
apply( m[ , 3 , ] , 2 , function(x) x[! is.na(x) ] )
#[[1]]
#[1] 6
#[[2]]
#[1] 4 7
#[[3]]
#[1] 19
应OP的要求:
# To find all values equal to 12 in the 2nd row
apply( m[ 2 , , ] , 2 , function(x) x[ x == 12 ] )