То, что происходит, заключается в том, что magrittr запутывается в том, в какую именно функцию вы хотите вставить предыдущее значение.Когда вы просто набираете
c(1,2) %>%
mean
magrittr
, вы легко можете увидеть, что mean
- это символ, который указывает на среднюю функцию.Но когда вы делаете base::mean
, все становится немного хитрее, потому что ::
также является функцией в R. Давайте сравним разницу между base::mean
и base::mean()
в R с точки зрения того, как они переводятся в вызовы функций.
as.list(quote(base::mean))
# [[1]]
# `::`
# [[2]]
# base
# [[3]]
# mean
as.list(quote(base::mean()))
# [[1]]
# base::mean
Вы можете увидеть эти разборы по-разному.Когда вы просто наберете base::mean
R, сначала увидите функцию ::
и попытаетесь ввести числа там.По сути, он пытается вызвать
`::`(., base, mean)
, что не имеет смысла, может, именно это дает вам конкретное сообщение об ошибке
Но если вы явно добавите ()
, R может увидеть, что выпытаемся вызвать функцию, возвращаемую из base::mean
, поэтому она добавит параметр в нужное место.Так что вы можете сделать
c(1,2) %>%
base::mean()
или
c(1,2) %>%
(base::mean)