在R中过滤循环内的多个数据帧列
我想使用循环来过滤数据帧的多个列,删除特定列表中任何给定列值所在的行 例如:在R中过滤循环内的多个数据帧列,r,dataframe,dplyr,R,Dataframe,Dplyr,我想使用循环来过滤数据帧的多个列,删除特定列表中任何给定列值所在的行 例如: > my_df <- data.frame(word1 = c("one", "two", "red", "blue"), word2 = c("apple","orange","banana","pear"), word3 = c("re
> my_df <- data.frame(word1 = c("one", "two", "red", "blue"), word2 = c("apple","orange","banana","pear"), word3 = c("red", "orange", "yellow", "green"))
> color_words = c("red", "orange", "yellow", "green", "blue")
> my_df
word1 word2 word3
1 one apple red
2 two orange orange
3 red banana yellow
4 blue pear green
我第一次尝试在循环中执行此筛选是:
col_names <- c("word1","word2")
for(col in col_names){
my_df <- my_df %>% filter(!col %in% color_words)
}
> my_df
word1 word2 word3
1 one apple red
2 two orange orange
3 red banana yellow
4 blue pear green
及
for(列名称中的列){
my_df%过滤器(!UQ(col)%in%颜色词)
}
>我的
单词1单词2单词3
一个苹果红
2两个橙子
3红香蕉黄
4蓝梨绿
通过循环进行过滤的正确方法是什么?您不需要循环,您可以使用跨
的过滤器为多列应用函数
library(dplyr)
my_df %>% filter(across(all_of(col_names), ~!. %in% color_words))
# word1 word2 word3
#1 one apple red
如果您有较旧版本的dplyr
,请使用filter\u,网址为
:
my_df %>% filter_at(col_names, all_vars(!. %in% color_words))
您不需要循环,您可以使用filter
和over
将函数应用于多列
library(dplyr)
my_df %>% filter(across(all_of(col_names), ~!. %in% color_words))
# word1 word2 word3
#1 one apple red
如果您有较旧版本的dplyr
,请使用filter\u,网址为
:
my_df %>% filter_at(col_names, all_vars(!. %in% color_words))
使用base
my_df使用base
对不起,我的问题不清楚,但一般来说,我不想筛选所有列,只想筛选特定列表中的列(在本例中为列名称
),谢谢。我仍然很好奇为什么我使用循环的尝试都不起作用?对不起,我的问题不清楚,但一般来说,我不想筛选所有列,只想筛选特定列表中的列(在本例中为col\u names
)。谢谢。我仍然很好奇为什么我使用循环的尝试都没有成功?
my_df %>% filter_at(col_names, all_vars(!. %in% color_words))