grep在数据框R中

时间:2013-12-03 14:02:49

标签: r grep

我想搜索所有不是NA的结果的数字数组的特定列。我用NA填充了12,12,12 dim阵列然后填充它。现在我想在第12列搜索值,所以一切都不是NA。我确信有可能使用grep()或somethign等价物吗?

谢谢

1 个答案:

答案 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 ] )