R- 两个列表中元素的所有成对组合

标签 r

我很确定这个问题有一个简单的答案,但由于我有限的 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/

相关文章:

r - 如何更新 Shiny 的 fileInput 对象?

r - 如何根据列值创建附加行或数据框

r - 输入以将幂律拟合到网络的度分布

r - 如何在与 Linux `cksum` 命令输出兼容的 R 中计算 CRC 校验和

r - 如何确定日期范围内的唯一年份?

R:使用 POSIXct 按日期聚合?

r - 将带时间戳的数据与另一个数据集中最接近的时间进行匹配。正确矢量化?更快的方法?

r - CRAN(或其任何亲属)是否有 API?

r - 使用 strip.y 作为 strip.x 而不翻转 facet_grid 轴

r - 将组副标题和小计行添加到 R 中的 data.frame 或表