R-两个列表中元素的所有成对组合
我很确定有一个直截了当的答案,但由于我有限的R经验,我很难想出它。我有一个代表不同实验的数据框列表,对于每个数据框,我都生成了一个回归模型——模型包含在一个单独的列表中。我想做的是使用predict函数预测数据框架和模型的每个可能组合的响应。下面是一个仅使用两个数据帧和两个模型来说明预期结果的示例:R-两个列表中元素的所有成对组合,r,R,我很确定有一个直截了当的答案,但由于我有限的R经验,我很难想出它。我有一个代表不同实验的数据框列表,对于每个数据框,我都生成了一个回归模型——模型包含在一个单独的列表中。我想做的是使用predict函数预测数据框架和模型的每个可能组合的响应。下面是一个仅使用两个数据帧和两个模型来说明预期结果的示例: predictor <- runif(1000) response <- runif(1000) data.1 <- data.frame(predictor,response)
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个模型,所以上面的方法既单调又愚蠢。我用Lappy尝试过各种方法,但我似乎没有正确的语法——有没有关于如何最好地对两个列表的元素的所有可能的成对组合执行函数的指针
谢谢,
赛斯如果你把你的模型和数据框放到列表中,生活会变得更轻松
modlst <- list(model.1, model.2, ....)
datlst <- list(data.1, data.2, ....)
out <- lapply(modlst, function(mod) {
lapply(datlst, function(dat) predict(mod, dat))
})
如果您将模型和数据帧放入列表中,生活会变得更轻松
modlst <- list(model.1, model.2, ....)
datlst <- list(data.1, data.2, ....)
out <- lapply(modlst, function(mod) {
lapply(datlst, function(dat) predict(mod, dat))
})