R: apply a function to every element of two variables respectively

前端 未结 3 985
一整个雨季
一整个雨季 2021-01-02 11:51

I have a function with two variables x and y:

fun1 <- function(x,y) {
  z <- x+y
  return(z)
}

The function work fine by itself:

3条回答
  •  刺人心
    刺人心 (楼主)
    2021-01-02 12:33

    If you want to use mapply() you have to provide it with n lists of arguments that have same size, and that will be passed to the function n by n, as in:

    mapply(fun1,c(1,2,3), c(4, 5, 6))
    [1] 5 7 9
    

    or one argument can be a scalar as in:

    mapply(fun1,c(1,2,3), 4)
    [1] 5 6 7
    

    Since you're trying to use all combinations of Lx and Ly, you can iterate one list, then iterate the other, like:

    sapply(Lx, function(x) mapply(fun1,x,Ly))
    

    or

    sapply(Ly, function(y) mapply(fun1,Lx,y))
    

    which produces same result as rawr proposition

    outer(Lx, Ly, fun1)
    

    where outer() is much quicker

提交回复
热议问题