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())
n () 오류 :이 함수는 직접 호출하면 안됩니다.
답변
나는 당신이 같은 세션에 dplyr
있고 plyr
로드 했다고 가정합니다 . dplyr
이 아닙니다 plyr
. 패키지 ddply
의 기능이 아닙니다 dplyr
.
모두 dplyr
와 plyr
기능을 가지고 summarise
/ summarize
.
conflicts()
마스킹 된 오브젝트를 보려면 의 결과 를보십시오.
답변
이전 답변에서 언급했듯이 plyr와 dplyr간에 충돌이있을 수 있습니다. 이 명령을 실행하여 plyr 패키지를 언로드 할 수 있습니다.
detach("package:plyr", unload=TRUE)
그런 다음 예상대로 계속할 수 있습니다.
library(dplyr)
...
summarise(n = n())
답변
마스킹 함수와의 혼동을 피하기 위해 아래 예와 같이 “package :: function”사양을 사용하는 것이 분명합니다.
delay <- dplyr::summarise(by_tailnum,
count = n(),
dist = mean(distance, na.rm = TRUE),
delay = mean(arr_delay, na.rm = TRUE))
답변
다른 경우에는이 오류가 다음 코드에서 발생했습니다.
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
다음과 같이 해결할 수 있습니다.
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
답변
언급 된 블로그에 따라 코드를 실행하는 동안 유사한 문제에 직면 한 다음 detach ( “package : plyr”, unload = TRUE)에서 솔루션을 실행합니다.
블로그 : https://www.analyticsvidhya.com/blog/2017/09/comparative-stock-analysis/
Master_Data_AutoCorrelations<-Master_Data_lags %>%
gather(key = "lag", value = "lag_value", -c(Stock,Date, Close)) %>%
mutate(lag = str_sub(lag, start = 5) %>% as.numeric) %>%
group_by(Stock, lag) %>%
summarize(
cor = cor(x = Close, y = lag_value, use = "pairwise.complete.obs"),
cutoff_upper = 2/(n())^0.5,
cutoff_lower = -2/(n())^0.5
)
분리 실행 후, 위의 코드를 다시 실행하면 아래에 따라 경고 메시지를 받았지만 정상적으로 작동하며 plyr가 언로드되었는지 여부가 확실하지 않습니다. 그리고 코드가 올바르게 실행되는 방법은 무엇입니까?
경고 메시지 : ‘plyr’네임 스페이스를 언로드 할 수 없음 : 네임 스페이스 ‘plyr’을 ‘reshape2’, ‘scales’, ‘broom’, ‘ggplot2’에서 가져 왔으므로 언로드 할 수 없습니다.
답변
저에게 해결책은 detach()
기능 이었습니다.