我正在尝试将计算应用于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 :(得分: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))