Как исправить: ошибка в n(): эту функцию нельзя вызывать напрямую


Одна ошибка, с которой вы можете столкнуться в R:

Error in n() : This function should not be called directly

Эта ошибка обычно возникает, когда вы пытаетесь использовать функцию n() из пакета dplyr , но пакет plyr загружается после пакета dplyr .

В этом руководстве рассказывается, как именно исправить эту ошибку.

Как воспроизвести ошибку

Предположим, у нас есть следующий фрейм данных в R:

#define data frame
df <- data.frame(team=rep(c('A', 'B'), each= 5 ),
 points=c(2, 4, 6, 8, 10, 12, 14, 16, 18, 20),
 assists=c(4, 7, 11, 16, 22, 29, 38, 49, 63, 80))

#view data frame
df

 team points assists
1 A 2 4
2 A 4 7
3 A 6 11
4 A 8 16
5 A 10 22
6 B 12 29
7 B 14 38
8 B 16 49
9 B 18 63
10 B 20 80

Теперь предположим, что мы пытаемся использовать функцию summ () из dplyr для подсчета количества строк, сгруппированных по командам:

library(dplyr)
library (plyr)

#attempt to count rows by team
df %>%
 group_by(team) %>%
 summarize(count = n())

Error in n() : This function should not be called directly

Мы получаем сообщение об ошибке, потому что мы загрузили пакет plyr после пакета dplyr , что вызывает проблемы.

Как исправить ошибку

Чтобы исправить эту ошибку, просто используйте dplyr:summarize , чтобы R точно знал, из какого пакета вы хотите использовать функцию суммирования :

library(dplyr)
library (plyr)

#count rows by team
df %>%
 group_by(team) %>%
 dplyr::summarize(count = n())

# A tibble: 2 x 2
 team count

1 A 5
2 B 5

Обратите внимание, что на этот раз мы можем подсчитать количество строк, сгруппированных командой, без ошибок, поскольку мы использовали dplyr::summarize для выполнения сводки.

Дополнительные ресурсы

В следующих руководствах объясняется, как устранять другие распространенные ошибки в R:

Как исправить в R: ошибка в as.Date.numeric(x): необходимо указать «происхождение»
Как исправить: ошибка в stripchart.default(x1, …): неверный метод построения графика
Как исправить: ошибка в eval(predvars, data, env): объект 'x' не найден

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.