lapply函数中的多个参数

时间:2013-11-16 13:14:45

标签: r lapply sapply mapply

我正在使用以下形式的lapply函数:

y=rnorm(10)
x1=c(1,1,1,2,2,2,3,3,3,4)
x2=c(5,5,6,6,7,7,8,8,9,9)
x3=c(7,7,8,8,9,9,10,10,11,11)

t1 <- outer(x1, unique(x1), '<=')
t2 <- outer(x2, unique(x2), '<=')
t3 <- outer(x3, unique(x3), '<=')
lapply(seq_along(unique(x1)), function(idx) t(y*t1[,idx]*t2) %*% t3)

由于我是一个R初学者,我有问题要概括上面的lapply调用添加另一个变量,也就是说,现在lapply会调用2个参数的函数。这就是我试图做的事情:

x4=c(7,6,6,5,9,5,10,1,1,2)
t4 <- outer(x4, unique(x4), '<=')
lapply(list(idx1=seq_along(unique(x1)),idx4=seq_along(unique(x4))),
       function(idx1,idx4) t(y*t1[,idx1]*t2) %*% t3*t4[,idx4])

这里的想法如下:我修复idx1,然后对每个idx4使用lapply函数。然后,对于下一个idx1,相同。我应该像嵌套的lapply。

到目前为止,我无法想出这样做的正确方法。有人会提供任何提示吗?

PS:这个问题与我之前提出的问题有关,但我的问题在于我无法将之前的答案概括为4维,因为它是结构的方式,lapply结构是不一样的。从此以后,我现在要求提出如何进行这种概括的提示。感谢

1 个答案:

答案 0 :(得分:0)

我想我有办法解决它,嵌套两个lapply函数。

lapply(seq_along(unique(x)), function(idx){lapply(seq_along(unique(r)),
                                              function(idr) t(y*t1[,idx]*t2)%*%(t3
                                              *t4[,idr]))})

这彻底解决了我的问题。如果有人有更清洁的解决方案,请发布。