dplyr select one_of()辅助函数会返回警告吗?

时间:2019-03-04 12:17:22

标签: r dataframe dplyr

我有两个要删除的主要数据框,其中包含两组列名:

df1 <- structure(list(a = c(1, 2), b = c(3, 4), c = c(5, 6), d = c(7, 
8), e = c(9, 10)), row.names = c(NA, -2L), class = c("tbl_df", 
"tbl", "data.frame"))

df2 <- structure(list(a = c(1, 2), b = c(3, 4), c = c(5, 6)), row.names = c(NA, 
-2L), class = c("tbl_df", "tbl", "data.frame"))

我想在以下列表中删除任何列名称:“ c”,“ d”,“ e”。

当我仅使用one_of()选择助手时,会收到警告:

> tibble(a = c(1,2), b = c(3,4), c = c(5,6)) %>% select(-one_of("c","d","e"))
# A tibble: 2 x 2
      a     b
  <dbl> <dbl>
1     1     3
2     2     4
Warning message:
Unknown columns: `d`, `e` 

,较大的警告为0。

请告知如何在没有警告的情况下按列名称进行过滤? 如果one_of()中存在我要忽略的列,请忽略它,否则保留它。

2 个答案:

答案 0 :(得分:0)

您可以使用

>>> from pathlib import Path

>>> str(Path(r"C:\WiNdOwS\SyStEm32\DeSkToP.iNi").resolve())
r'C:\Windows\System32\desktop.ini'

这将全局关闭警告消息以将其重新打开,您可以运行以下命令:

options(warn=-1)

不建议这样做,只是根据您的要求解决。

要仅对此代码禁止警告,可以使用Trycatch():

options(warn=0) 

答案 1 :(得分:0)

我希望我的回答能解决您的问题,我使用了 select_if 函数,而不是使用select的辅助函数。 如果您想了解更多有关select_if的信息,请在RStudio控制台中键入?select_if

tibble(a = c(1,2), b = c(3,4), c = c(5,6)) %>% select_if(colnames(.) %in% c("a","c","d","e"))

谢谢!