2013-07-27 81 views
2

我很確定這有一個簡單的答案,但是由於我有限的R經驗,我很難處理它。我有一個表示不同實驗的數據框的列表,對於這些數據框中的每一個,我都生成了一個迴歸模型 - 模型包含在一個單獨的列表中。我想要做的事情是使用predict()函數來預測數據框架和模型的每種可能組合的響應。下面是僅使用兩個數據幀和兩個模型來說明所期望的結果的例子:R-來自兩個列表的元素的所有成對組合

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

生活變得更加容易。

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

out <- lapply(modlst, function(mod) { 
      lapply(datlst, function(dat) predict(mod, dat)) 
     }) 
+0

是的,這是完美的 - 謝謝! – user2625153

相關問題