Я пытаюсь освоить подходы tidyverse и dplyr и хочу применить следующую функцию к каждому столбцу кадра данных / таблицы данных:
library(multimode)
funx <- function(x) {multimode::modetest(x, method = 'SI') }
, а затем попробуйте использовать что-то вроде sumrize_all для начала, но я сразу получаю сообщение об ошибке:
Ошибка: столбец mpg
должен иметь длину 1 (суммарное значение), а не 8
library(dplyr)
mtcars %>%
summarise_all(funx)
В итоге я надеюсь получить новый фрейм данных, в котором показаны имена столбцов, проверенные в столбце 1, и значение p modetest
в столбце 2
.
Со вчерашнего дня (23-05-2019) после обновления пакетов мое решение не работает, и следующий код теперь выводит «.» точки вместо имен столбцов
отправил сообщение на страницу github, чтобы узнать причину этого изменения: github
library(multimode)
funx <- function(x) {
print(substitute(x))
multires <- multimode::modetest(x, method = 'SI')
p <- multires$p.value}
mtcars %>%
select(1:2) %>%
summarise_all(list(~ funx(.)))
ОБНОВЛЕНИЕ По иронии судьбы, после получения отзыва о посте github, с новой версией мы можем теперь сделать это:
mtcars %>%
select(1:2) %>%
summarise_all(funx)
Как вы видите, это тот же самый синтаксис, с которым я начал свою проблему при публикации этого вопроса. Итак, хорошая работа, что команда dplyr сделала синтаксис более «естественным», я бы сказал.