我想运行一系列回归模型,并将与特定协变量相关的输出放入数组。我已经能够使用plyr
包中的laply
来实现这一点,如下所示:
set.seed(1)
df <- data.frame(x1 = rnorm(100, 0, 1),
x2 = rnorm(100, 0, 1),
y1 = rnorm(100, 0, 1),
y2 = rnorm(100, 0, 1),
t2 = sample(0:1, 100, replace = TRUE),
t1 = sample(0:1, 100, replace = TRUE))
run_regressions <- function(model) {
model <- glm(model, data = df)
return(summary(model)$coefficients[2,])
}
models <- list("y1 ~ t1 + x1",
"y2 ~ t2 + x1 + x2")
results <- laply(models, run_regressions)
results
字符串
现在我想扩展它,以便我可以将回归模型的不同元素分别传递给run_regressions函数。回归函数的定义如下
run_regressions2 <- function(outcome, treatment, covariates) {
model <- glm(paste(outcome, " ~ ", treatment, " + ", covariates), data = df)
return(summary(model)$coefficients[2,])
}
型
其中要运行的特定模型被指定为
models <- list(c("y1", "t1", "x1"),
c("y2", "t2", "x1 + x2"))
型
有没有一些方法可以使用laply
或其他函数来实现这一点?
我试着在plyr
文档中搜索类似的例子,并在SO中搜索类似的问题,但没有找到任何结果。
2条答案
按热度按时间qf9go6mv1#
正如@jdobres所提到的,
plyr
已经退休很久了。有很多现代的替代品,如dplyr
和purrr
包。一种选择是在R基中使用
lapply
。在这种情况下,第一种情况将更改为字符串
在第二种情况下,您可以继续使用
lapply
-型
或者更一般地,对任意数量的参数使用
do.call
。型
5lwkijsr2#
@Ronak Shah的最终解决方案的替代方案,而不必使用
models
两次,将是:字符串
内部的
lapply
将models
更改为列表的列表,然后将其用作do.call
的参数。