【发布时间】:2019-11-11 01:34:10
【问题描述】:
我不能将xtabs 或aggregate(或我测试的任何函数,包括ftable 和lm)的subset 参数与mapply 一起使用。以下调用因subset 参数而失败,但它们在没有参数的情况下也能正常工作:
mapply(FUN = xtabs,
formula = list(~ wool,
~ wool + tension),
subset = list(breaks < 15,
breaks < 20),
MoreArgs = list(data = warpbreaks))
# Error in mapply(FUN = xtabs, formula = list(~wool, ~wool + tension), subset = list(breaks < :
# object 'breaks' not found
#
# expected result 1/2:
# wool
# A B
# 2 2
#
# expected result 2/2:
# tension
# wool L M H
# A 0 4 3
# B 2 2 5
mapply(FUN = aggregate,
formula = list(breaks ~ wool,
breaks ~ wool + tension),
subset = list(breaks < 15,
breaks < 20),
MoreArgs = list(data = warpbreaks,
FUN = length))
# Error in mapply(FUN = aggregate, formula = list(breaks ~ wool, breaks ~ :
# object 'breaks' not found
#
# expected result 1/2:
# wool breaks
# 1 A 2
# 2 B 2
#
# expected result 2/2:
# wool tension breaks
# 1 B L 2
# 2 A M 4
# 3 B M 2
# 4 A H 3
# 5 B H 5
错误似乎是由于subset 参数未在正确的环境中评估。我知道我可以在 data 参数中使用 data = warpbreaks[warpbreaks$breaks < 20, ] 作为解决方法,但我希望提高我对 R 的了解。
我的问题是:
- 如何将
subset参数与mapply一起使用?我尝试使用match.call和eval.parent,但到目前为止没有成功(更多详细信息请参阅我的previous questions)。 - 为什么在
data = warpbreaks中评估formula参数,但是subset参数不是?
【问题讨论】:
标签: r scope subset evaluation mapply