2

我很确定这个问题有一个简单的答案,但是由于我有限的 R 经验,我很难想出它。我有一个代表不同实验的数据框列表,对于这些数据框中的每一个,我都生成了一个回归模型——这些模型包含在一个单独的列表中。我想做的是使用 predict() 函数来预测数据框和模型的每种可能组合的响应。这是一个仅使用两个数据框和两个模型来说明所需结果的示例:

predictor <- runif(1000)
response <- runif(1000)
data.1 <- data.frame(predictor,response) # generate first data frame

predictor <- runif(1000)
response <- runif(1000)
data.2 <- data.frame(predictor,response) # generate second data frame

model.1 <- lm(response ~ predictor,data=data.1) # generate model for data.1
model.2 <- lm(response ~ predictor,data=data.2) # generate model for data.2

pred.1.1 <- predict(model.1,newdata=data.1) # use model.1 to predict outcome based on data.1
pred.1.2 <- predict(model.1,newdata=data.2) # use model.1 to predict outcome based on data.2
pred.2.1 <- predict(model.2,newdata=data.1) # use model.2 to predict outcome based on data.1
pred.2.2 <- predict(model.2,newdata=data.2) # use model.2 to predict outcome based on data.2

对于上面的两个例子来说,这很简单,但实际上我有 10 个不同的数据帧和 10 个模型,所以上面的方法既乏味又愚蠢。我已经尝试了使用 lapply() 的各种方法,但我似乎无法获得正确的语法 - 关于如何最好地对两个列表元素的所有可能成对组合执行函数的任何指针?

谢谢,赛斯

4

1 回答 1

4

如果您将模型和数据框放入列表中,生活会变得更轻松。

modlst <- list(model.1, model.2, ....)
datlst <- list(data.1, data.2, ....)

out <- lapply(modlst, function(mod) {
           lapply(datlst, function(dat) predict(mod, dat))
       })
于 2013-07-27T08:55:17.943 回答