我很确定这个问题有一个简单的答案,但由于我有限的 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() 尝试了各种方法,但我似乎无法正确理解语法 - 关于如何最好地对两个列表元素的所有可能的成对组合执行函数的任何指针?
谢谢, 赛斯
最佳答案
如果您将模型和数据框放入列表中,生活会变得更轻松。
modlst <- list(model.1, model.2, ....)
datlst <- list(data.1, data.2, ....)
out <- lapply(modlst, function(mod) {
lapply(datlst, function(dat) predict(mod, dat))
})
关于R- 两个列表中元素的所有成对组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17895951/