如何使用与向量匹配的值提取数据框中的列?

时间:2017-03-27 10:14:42

标签: r dataframe

例如,我有一个data.frame(第一行是数据框的名称):

A  B  C  D
a  i  e  e
a  e  i  o
a  a  i  i
i  -  a  m
a  -  a  m

我有一个向量cc= c('a', 'e', 'i'),我想要提取数据框中的列,其值仅包含在向量cc中,因为BD列包含不在cc中的值,因此应排除这些值,并且所需的结果应如下所示

    A    C  
    a    e  
    a    i  
    a    i  
    i    a  
    a    a  

我尝试了代码:

apply(df, 2 , function(x) x%in% cc)

但结果将是

 A     B     C     D
TRUE  TRUE   TRUE  TRUE
TRUE  TRUE   TRUE  TRUE
TRUE  TRUE   TRUE  TRUE
TRUE  FALSE  TRUE  FALSE
TRUE  FALSE  TRUE  FALSE 

我被困在这里,任何人都可以告诉我下一步我可以做什么?

2 个答案:

答案 0 :(得分:0)

我们可以尝试

df1[sapply(df1, function(x) all(x %in% cc))]

Filter

Filter(function(x) all(x %in% cc), df1)
#  A C
#1 a e
#2 a i
#3 a i
#4 i a
#5 a a

答案 1 :(得分:0)

这是另一种选择 - 使用anyNAmatch

mydf[vapply(mydf, function(x) !anyNA(match(x, cc)), logical(1L))]
##   A C
## 1 a e
## 2 a i
## 3 a i
## 4 i a
## 5 a a