Я не могу использовать аргумент subset
для любой функции с mapply
. Следующие вызовы завершаются неудачно с аргументом subset
, но они работают без:
mapply(ftable,
formula = list(wool ~ breaks,
wool + tension ~ breaks),
subset = list(breaks < 15,
breaks < 20),
MoreArgs = list(data = warpbreaks))
# Error in mapply(ftable, formula = list(wool ~ breaks, wool + tension ~ :
# object 'breaks' not found
mapply(xtabs,
formula = list(~ wool,
~ wool + tension),
subset = list(breaks < 15,
breaks < 20),
MoreArgs = list(data = warpbreaks))
# Error in mapply(xtabs, formula = list(~wool, ~wool + tension), subset = list(breaks < :
# object 'breaks' not found
Map(lm,
formula = list(breaks ~ wool,
breaks ~ tension),
subset = list(breaks < 15,
breaks < 20),
MoreArgs = list(data = warpbreaks))
# Error in mapply(FUN = f, ..., SIMPLIFY = FALSE) :
# object 'breaks' not found
Ошибка, по-видимому, из-за subset
аргументов, которые не оцениваются в правильной среде. Я знаю, что могу использовать в качестве аргумента data
аргумент data = warpbreaks[warpbreaks$breaks < 20, ]
, но я стремлюсь улучшить свои знания о R.
Мои вопросы:
- Почему аргумент
formula
оценивается в data = warpbreaks
, но
аргумент subset
не является?
- Я написал оболочку около
ftable
, потому что мне нужно вычислять плоские таблицы с частотой и процентом для многих переменных (более подробно в моих предыдущих вопросах ). Могу ли я изменить оболочку для использования аргумента subset
ftable
в mapply
?
.
# the wrapper
mytable <- function(...) {
mc <- match.call()
mc[[1]] <- quote(expr = ftable)
eval.parent(expr = mc)
# etc
}