Как исправить: ошибка в 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 to 2 4
2 to 4 7
3 to 6 11
4 to 8 16
5 to 10 22
6 B 12 29
7 B 14 38
8 B 16 49
9 B 18 63
10 B 20 80

Теперь предположим, что мы пытаемся использовать функцию summary() 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 to 5
2 B 5

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

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *