Как я могу написать это R выражение в формате оператора канала? - PullRequest
0 голосов
/ 11 ноября 2018

Я пытаюсь переписать это выражение для оператора трубы magrittr:

печать (среднее (тяга (df, высота), na.rm = TRUE))

, который возвращает 175,4 для моего набора данных.

Я знаю, что мне нужно начать с фрейма данных и записать его как> df%>%, но я запутался в том, как выписать его наизнанку. Например, должен ли na.rm = TRUE входить в mean (), pull () или print ()?

ОБНОВЛЕНИЕ: Я действительно понял это методом проб и ошибок ...

>df%>%
+pull(height)%>%
+mean(na.rm=TRUE)
+print()

returns 175.4 

1 Ответ

0 голосов
/ 11 ноября 2018

Хорошей практикой будет сделать воспроизводимый пример с фиктивными данными, такими как:

height <- seq(1:30)
weight <- seq(1:30)
df <- data.frame(height, weight)

Эти операторы труб работают с большей частью тививерса (а не только с магриттром). То, что вы пытаетесь сделать, на самом деле выходит из dplyr. Значение na.rm = T требуется для многих сводных переменных, таких как mean, sd, а также для определенных функций, используемых для сбора определенных точек данных, таких как min, max и т. Д. Эти функции плохо работают со значениями NA.

df %>% pull(height) %>% mean(na.rm=T) %>% print()

Если ваши данные не вложены, вам может даже не понадобиться использовать pull

df %>% summarise(mean = mean(height,na.rm=T))

Кроме того, используя суммирование, вы можете передавать их в другой фрейм данных, а не просто печатать, и вызывать их из фрейма данных в любое время.

df %>% summarise(meanHt = mean(height,na.rm=T), sdHt = sd(height,na.rm=T)) -> summary
summary[1]
summary[2]
...