0

我正在使用以下形式的 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 结构是不一样的。从此以后,我现在要求提供有关如何进行这种概括的提示。谢谢

4

1 回答 1

0

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

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

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

于 2013-11-17T16:37:08.800 回答