Mic*_*use 95 r function conflicting-libraries plyr dplyr
我试图重现dplyr包中的一个示例但是此错误消息.我期待看到以每种组合的频率产生的新列n.有人能告诉我我错过了什么吗?我三重检查包装是否已加载.一如既往地感谢您的帮助.
library(dplyr)
# summarise peels off a single layer of grouping
by_vs_am <- group_by(mtcars, vs, am)
by_vs <- summarise(by_vs_am, n = n())
Run Code Online (Sandbox Code Playgroud)
n()出错:不应直接调用此函数
mne*_*nel 119
我认为你有dplyr
并plyr
加载在同一个会话中.dplyr
不是plyr
.ddply
不是dplyr
包中的功能.
无论dplyr
和plyr
具备的功能summarise
/ summarize
.
查看conflicts()
看到蒙版对象的结果.
小智 39
如前面的答案所述,你可能在plyr和dplyr之间存在冲突.您可以运行此命令来卸载plyr包.
detach("package:plyr", unload=TRUE)
Run Code Online (Sandbox Code Playgroud)
然后你可以按预期继续.
library(dplyr)
...
summarise(n = n())
Run Code Online (Sandbox Code Playgroud)
use*_*894 26
为了避免与掩码函数混淆,很明显使用"package :: function"规范,如下例所示:
delay <- dplyr::summarise(by_tailnum,
count = n(),
dist = mean(distance, na.rm = TRUE),
delay = mean(arr_delay, na.rm = TRUE))
Run Code Online (Sandbox Code Playgroud)
在另一种情况下,此错误发生在以下代码中.
library(dplyr) # dplyr 0.5.0
library(lazyeval)
df <- data_frame(group = c(1, 2, 2, 3, 3, 3))
g <- "group"
df %>%
group_by_(g) %>%
summarise_(
n = n(),
sum = interp(~sum(col, na.rm = TRUE), col = as.name(g))
)
# Error in n() : This function should not be called directly
Run Code Online (Sandbox Code Playgroud)
它可以解决如下.
df %>%
group_by_(g) %>%
summarise_(
n = "n()",
sum = interp(~sum(col, na.rm = TRUE), col = as.name(g))
)
# A tibble: 3 × 3
# group n sum
# <dbl> <int> <dbl>
# 1 1 1 1
# 2 2 2 4
# 3 3 3 9
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
60458 次 |
最近记录: |