dplyr过滤器没有';他似乎不在循环中工作

dplyr过滤器没有';他似乎不在循环中工作,r,for-loop,filter,dplyr,R,For Loop,Filter,Dplyr,我有很多列,其中我想要去掉3个特定的值。我想做一个循环。但由于某种原因,它不起作用,我不明白为什么。以下是函数: for (i in colnames(df1)){ z <- as.name(i) df1 <- df1 %>% filter(z != "Refusal") %>% filter(z != "Don't know") %>% filter(z != "No answer") } for(i在colnames(df1)中){ z%fi

我有很多列,其中我想要去掉3个特定的值。我想做一个循环。但由于某种原因,它不起作用,我不明白为什么。以下是函数:

for (i in colnames(df1)){
    z <- as.name(i)
    df1 <- df1 %>% filter(z != "Refusal") %>% filter(z != "Don't know") %>%  filter(z != "No answer")
}
for(i在colnames(df1)中){
z%filter(z!=“不知道”)%%>%filter(z!=“没有答案”)
}
我知道变量z是不必要的,但我希望它能有所帮助。没有

这是一个完整的示例,每个列都有代码。这是可行的,但却是相当烦人的解决方案

df1 <- data.frame(country = df$cntry, gender = df$gndr, pplfair = df$pplfair,
                  gincdif = df$gincdif, happy = df$happy, sclmeet = df$sclmeet,
                  inprdsc = df$inprdsc, sclat = df$sclact, rlgbg = df$rlgblg, 
                  dfincac = df$dfincac, sblazy = df$sblazy, eduyrs = df$eduyrs,
                  imprich = df$imprich, iprspot = df$iprspot, impfun = df$impfun)

##Wrangling data

###from data removing no answer, don't know, refusal
df1 <- df1 %>% filter(pplfair != "Refusal") %>% filter(pplfair != "Don't know") %>%  filter(pplfair != "No answer")

df1 <- df1 %>% filter(gincdif != "Refusal") %>% filter(gincdif != "Don't know") %>%  filter(gincdif != "No answer")

df1 <- df1 %>% filter(happy != "Refusal") %>% filter(happy != "Don't know") %>%  filter(happy != "No answer")

df1 <- df1 %>% filter(sclmeet != "Refusal") %>% filter(sclmeet != "Don't know") %>%  filter(sclmeet != "No answer")

df1 <- df1 %>% filter(inprdsc != "Refusal") %>% filter(inprdsc != "Don't know") %>%  filter(inprdsc != "No answer")

df1 <- df1 %>% filter(sclat != "Refusal") %>% filter(sclat != "Don't know") %>%  filter(sclat != "No answer")

df1 <- df1 %>% filter(rlgbg != "Refusal") %>% filter(rlgbg != "Don't know") %>%  filter(rlgbg != "No answer")

df1 <- df1 %>% filter(dfincac != "Refusal") %>% filter(dfincac != "Don't know") %>%  filter(dfincac != "No answer")

df1 <- df1 %>% filter(sblazy != "Refusal") %>% filter(sblazy != "Don't know") %>%  filter(sblazy != "No answer")

df1 <- df1 %>% filter(eduyrs != "Refusal") %>% filter(eduyrs != "Don't know") %>%  filter(eduyrs != "No answer")

df1 <- df1 %>% filter(imprich != "Refusal") %>% filter(imprich != "Don't know") %>%  filter(imprich != "No answer")

df1 <- df1 %>% filter(iprspot != "Refusal") %>% filter(iprspot != "Don't know") %>%  filter(iprspot != "No answer")

df1 <- df1 %>% filter(impfun != "Refusal") %>% filter(impfun != "Don't know") %>%  filter(impfun != "No answer")

df1OP的代码可以使用
filter\u all
%in%
进行大量简化:

library(dplyr)

df1 %>% 
  filter_all(any_vars(!(. %in% c("Refusal", "Don't know", "No answer"))))
或者如果它是所有列的子集,则在
处使用
filter\u:

df1 %>% 
  filter_at(vars(varnames), any_vars(!(. %in% c("Refusal", "Don't know", "No answer"))))

OP的代码可以使用
filter\u all
%in%
进行大量简化:

library(dplyr)

df1 %>% 
  filter_all(any_vars(!(. %in% c("Refusal", "Don't know", "No answer"))))
或者如果它是所有列的子集,则在
处使用
filter\u:

df1 %>% 
  filter_at(vars(varnames), any_vars(!(. %in% c("Refusal", "Don't know", "No answer"))))

如果您包含一个简单的示例输入和所需的输出,可以用来测试和验证可能的解决方案,那么就更容易为您提供帮助。您需要将名称拼接到筛选器中。使用
filter(!!z!=“不知道”)
例如,当您试图在过滤器中使用
z
时。如果您包含一个简单的示例输入和所需的输出,可用于测试和验证可能的解决方案,则更容易帮助您。您需要将名称拼接到筛选器中。使用
filter(!!z!=“不知道”)
例如,您尝试在过滤器中使用
z