Объединить различные функции в R - PullRequest
0 голосов
/ 01 ноября 2018

Мне действительно нравится семейство apply в R, но я думаю, что до сих пор не могу получить лучшее из этого.

with(mtcars, tapply(mpg, cyl, mean))

sapply(mtcars, mean)

Эти две функции, например, действительно хороши, но как их объединить, чтобы получить среднее значение для каждой переменной для каждой категории переменной cyl?

С dplyr это довольно легко, я думаю:

mtcars %>%
    group_by(cyl) %>%
    summarise_all(mean)

Для dplyr это кажется довольно простым. Так что может быть еще один вопрос, почему полезно даже изучить все эти прикладные функции, когда dplyr облегчает решение проблемы? : -)

1 Ответ

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

Если вы ищете решение base R, то вы можете использовать split, чтобы отделить ваш фрейм данных на cyl, затем используйте sapply, как и раньше:

S <- split( mtcars, mtcars$cyl )
lapply( S, function(x) sapply(x, mean) )

Ваш второй вопрос в первую очередь основан на мнениях, поэтому я передам мои: tidyverse пакетов, таких как dplyr, основаны на функциональности base R, чтобы обеспечить удобный и согласованный интерфейс для общих операций манипулирования данными. По этой причине это, как правило, предпочтительнее, но не всегда может быть доступно в конкретной среде разработки. В последнем случае полезно знать, как использовать функциональность базы R.

...