как написать следующий код, используя %›% в R

Я пытаюсь использовать все больше и больше оператора %>% с dplyr в своем коде, но я не могу понять, как все время использовать %>%. Например, как мне правильно использовать его с функцией complete.cases() для

X <- X[complete.cases(X), ]

с помощью оператора %>%. Я пишу

X %>% filter(X %>% complete.cases)

но наличие X с обеих сторон оператора не кажется мне правильным. Хотя код работает!


person Satya    schedule 22.05.2015    source источник


Ответы (2)


Это будет просто

x %>% filter(complete.cases)

Причина использования оператора цепочки состоит в том, чтобы избежать необходимости вводить данные каждый раз, поэтому, даже если у вас больше функций, вы можете просто пропустить первый параметр и упомянуть остальные.

person ytk    schedule 22.05.2015
comment
Здесь: library(datasets) library(dplyr) x %>% subset(mpg > 20) %>% group_by(gear) %>% summarise(avg_hp = mean(hp)) даст этот вывод: gear avg_hp 1 3 103.5 2 4 82.8 3 5 102.0 - person ytk; 23.05.2015

Как этот пост также описывает. Точка указывает на передаваемый кадр данных, что позволяет вам сделать это:

X <- data.frame(a=rep(1,10),
                b=rep("a", 10),
                c=1:10)
X[sample(1:20,5),2:3] <- NA

library(dplyr)
X %>% 
    filter(complete.cases(.))

Идея состоит в том, что фрейм данных, полученный с левой стороны оператора %>%, будет первым вводом в вызове функции после него.

person MattV    schedule 22.05.2015