используйте pipe для элегантной установки элементов data.frame - PullRequest
0 голосов
/ 04 февраля 2019

Кто-нибудь знает, как использовать %>% или %<>% для этого:

cars[cars$speed < 10 & cars$dist < 95 | cars$speed > 100,] <- NA

Я пытался:

cars %>% 
  .[.$speed < 10 &.$dist < 95 | .$dist > 100,] %>% 
  set(., j=1:dim(.)[2], value = NA)

, но это не правильный путь.

1 Ответ

0 голосов
/ 04 февраля 2019

Один из способов - вычислить индексы строк, которые мы хотим изменить, и затем использовать их для значений replace во всех столбцах, используя mutate_all

library(dplyr)

cars %>%
   mutate(inds = (speed < 10 & dist < 95) | speed > 100) %>%
   mutate_all(funs(replace(.,inds, NA))) %>%
   select(-inds)


#   speed dist
#1     NA   NA
#2     NA   NA
#3     NA   NA
#4     NA   NA
#5     NA   NA
#6     NA   NA
#7     10   18
#8     10   26
#9     10   34
#10    11   17
#...
...