如何修复:n() 中的错误:不应直接调用此函数


在 R 中您可能遇到的错误是:

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

当您尝试使用dplyr包的n()函数,但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

现在假设我们尝试使用dplyrsummary()函数来计算按团队分组的行数:

 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 

我们收到错误,因为我们在dplyr包之后加载了plyr包,这导致了问题。

如何修复错误

修复此错误的方法是简单地使用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”

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注