例如,我有一个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
中,因为B
和D
列包含不在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
我被困在这里,任何人都可以告诉我下一步我可以做什么?
答案 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)
这是另一种选择 - 使用anyNA
和match
:
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