【发布时间】:2014-01-12 22:39:11
【问题描述】:
我正在尝试使用mapply 将t.test 应用于两个参数列表。第一个列表formulas 包含三个公式,第二个列表periods 包含三个向量,它们是my.data 的子集,我使用MoreArgs 参数传递。
我可以使用for 循环(也在下方)手动执行t.tests,但我无法弄清楚为什么我的mapply 使用失败。这不是使用mapply的正确时间吗?
# similar data
my.data <- data.frame(CAR1=rnorm(150),
CAR2=rnorm(150),
CAR3=rnorm(150),
period=rep(1:3, each=50),
treated=rep(1:2, times=75)
)
# two lists to pass as arguments to `t.test()`
# `subset`
periods <- list(my.data$period == 1,
my.data$period <= 2,
my.data$period <= 3
)
# `formula`
formulas <- list(CAR1 ~ treated,
CAR2 ~ treated,
CAR3 ~ treated
)
# manual solution works
ttests <- list()
for (i in 1:3) {
ttests[[i]] <- t.test(formulas[[i]],
data=my.data,
subset=periods[[i]]
)
}
# but `mapply` fails
ttest <- mapply(FUN=t.test,
formula=formulas,
subset=periods,
MoreArgs=list(data=my.data),
SIMPLIFY=FALSE
)
# with error "Error in eval(expr, envir, enclos) : object 'dots' not found"
【问题讨论】: