簡體   English   中英

應用於函數中的多個參數

[英]lapply to multiple arguments in a function

我以以下形式使用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,相同。 我應該像嵌套的l子。

到目前為止,我還無法提出正確的方法。 有人會提供小費嗎?

PS .:這個問題與我之前提出的問題有關,但是我的問題是,由於結構的方式不同,lapply結構並不相同,因此我無法將先前對4維的答案進行概括。 從今以后,我現在要求提供有關如何進行這種概括的提示。 謝謝

我想我有一種解決方法,嵌套了兩個lapply函數。

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

絕對可以解決我的問題。 如果有人有更清潔的解決方案,請發布它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM