Помощник dplyr select one_of () возвращает предупреждение? - PullRequest
0 голосов
/ 04 марта 2019

У меня есть два основных кадра данных с двумя наборами имен столбцов, которые я хочу отбросить:

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 голосов
/ 24 июля 2019

Я надеюсь, что мой ответ решит вашу проблему. Я использовал функцию select_if вместо использования вспомогательной функции select.Если вы хотите узнать больше о типе select_if ? Select_if в консоли RStudio

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

Спасибо!

0 голосов
/ 04 марта 2019

Вы можете использовать

options(warn=-1)

Это отключит предупреждающие сообщения глобально, чтобы включить его снова. Вы можете запустить команду как:

options(warn=0) 

Это не рекомендуется, просто обойтипо вашему требованию.

Чтобы подавить предупреждение только для этого кода, вы можете использовать Trycatch ():

tryCatch(
suppressWarnings( tibble(a = c(1,2), b = c(3,4), c = c(5,6)) %>%
select(-one_of("c","d","e"))  
  )
  );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...