我在R中有一個函數需要3個參數,比如foo(x,y,z)
。R將mapply和sapply組合起來
當我調用函數時,我確實有一個x
的元素列表,以及一個y
的列表,但z
只有一個元素。如果Z
是一個列表,並且我想將foo
應用於每個元素,那麼mapply(foo, x, y, z)
的作品。
但是,由於z
不是列表,因此mapply(foo,x,y,z)
不起作用。
更具體地說,如果x
和y是每個都有3個元素的列表,則下列方法可行:mapply(foo, x, y, list(z, z, z))
。
有沒有一種方法,我可以結合mapply
和sapply
沒有我首先使z
成爲3個元素列表?我想z
只是被重用!
編輯1:有人問我的一個例子:
mylist1 <- list(c(5,4), c(7,9), c(8,3))
mylist2<- list(c(2,3), c(6,7), c(10,11))
item3 <- matrix(data = 15, nrow = 3, ncol = 3)
foo <- function(x,y,z){
return(x[1]+y[2]+z[2,2])
}
以下工作:
> mapply(foo, mylist1, mylist2, list(item3,item3, item3))
[1] 23 29 34
下不起作用:
mapply(foo, mylist1, mylist2, item3)
Error in z[2, 2] : incorrect number of dimensions
我不認爲我跟隨。 '?mapply'上的文檔聲明參數通過循環擴展。你能構建一個能夠說明你的問題的具體例子嗎? – joran