将列表元素指定为函数参数

时间:2014-04-19 13:10:34

标签: r function mapply

假设:

list_a <- list(1, 10)
list_2 <- list(5, 20)

my.foo <- function (z,w) z+w 

我的主要问题是:对于每个list_对象,如何将其两个元素作为my.foo的参数传递,以便获得11和25?

到目前为止,我最接近解决问题的猜测是:

mapply(my.foo, list_a, list_2)

但它不适合我需要做的事情,因为它返回6和30.

感谢您的任何建议, 斯特凡诺

1 个答案:

答案 0 :(得分:2)

您可以使用lsget来获取对象,do.call使用对象的内容作为参数来调用您的函数:

sapply(ls(pattern="list_*"), function(x) do.call(my.foo, get(x)))
# list_2 list_a 
#     25     11 

如果您想要提供要操作的对象列表:

objs <- list(list_a, list_2)
unlist(lapply(objs, function(x) do.call(my.foo, x)))
# [1] 11 25