【问题标题】:lapply to multiple arguments in a function应用于函数中的多个参数
【发布时间】:2013-11-16 13:14:45
【问题描述】:

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

【问题讨论】:

    标签: r lapply sapply mapply


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-19
      • 1970-01-01
      • 2016-09-07
      • 2020-08-11
      • 2022-08-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多