2015-10-26 109 views
0

我在嘗試將計算應用於64個項目的列表。我有兩個列表。第一個列表稱爲CJAN,它是包含兩個數字的64個線性模型的列表 - 一個整數和斜率係數,如下所示。第二個列表稱爲JAN.FUT,它是包含251個數字的64個文件的列表,如下所示。將一個列表中的項目與另一個列表中的項目相乘

CJAN List of 64 
file1: Named num[1:2] -92.37 1.02 
..-attr(*, "names")= chr [1:2] "(Intercept)" "x$x" 
----------------------------------- 
file64 Named num[1:2] -45.42 0.98 
..-attr(*, "names")= chr [1:2] "(Intercept)" "x$x" 


JAN.FUT List of 64 
file1: num[1:251] 126 164... 
----------------------------------- 
file64: num[1:251] 150 126... 

我想乘以JAN.FUT列表與來自CJAN列表中的截距值的所有項目,然後斜率係數(X $ x)的添加到所得的計算。這是我的方法來解決在列表中使用預測函數的困難。我曾嘗試:

PRED=lapply(JAN.FUT, function(x) (x*CJAN["x$x"])+CJAN["(Intercept)"]) 

,但我得到的錯誤信息:

Error in x * CJAN["x$x"] : non-numeric argument to binary operator 

任何人都知道如何解決這個問題?

回答

0

使用Map

Map(function(x,y){ 
    x["x$x"] * y + x["(Intercept)"] 
}, CJAN, JAN.FUT) 

其中在向量的清單,逐元素的length==length(JAN.FUT)

[[1]] 
[1] 3.7419169 -0.1293963 1.7262568 2.2657252 1.8085366 

[[2]] 
[1] 2.575502 9.046088 2.621364 11.073695 2.749144 

的數據結果:

set.seed(42) 

CJAN <- list(c("(Intercept)" = 1, "x$x" = 2), c("(Intercept)" = 3, "x$x" = 4)) 
JAN.FUT <- list(rnorm(5), rnorm(5)) 
+0

出色的作品。非常感謝@FlooO –

相關問題