Нестандартная оценка аргумента подмножества с mapply в R - PullRequest
1 голос
/ 29 июня 2019

Я не могу использовать аргумент 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...