J'ai une fonction dans R qui prend en paramètre 3, disons foo(x,y,z)
.R Combiner mapply et sapply
Lorsque j'appelle la fonction, j'ai vraiment une liste d'éléments pour x
, et une liste pour y
mais seulement un élément pour z
. Si Z
était une liste, et je voulais appliquer foo
à chaque élément, mapply(foo, x, y, z)
fonctionne. Cependant, puisque z
n'est pas une liste, mapply(foo,x,y,z)
ne fonctionne pas.
Plus précisément, si x
et y sont des listes de 3 éléments chacun, ce qui suit fonctionne cependant: mapply(foo, x, y, list(z, z, z))
.
Y at-il un moyen que je peux peut-être combiner mapply
et sapply
sans moi d'abord faire z
dans une liste de 3 éléments? Je veux juste que z
soit réutilisé!
Edit 1: On m'a demandé un exemple:
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])
}
Les travaux suivants:
> mapply(foo, mylist1, mylist2, list(item3,item3, item3))
[1] 23 29 34
Ce qui suit ne fonctionne pas:
mapply(foo, mylist1, mylist2, item3)
Error in z[2, 2] : incorrect number of dimensions
Je ne pense pas que je suis. La documentation de '? Mapply' indique que les arguments sont étendus via le recyclage. Pouvez-vous construire un exemple concret illustrant votre problème? – joran