1

假设:

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。

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

4

1 回答 1

2

您可以使用lsandget获取对象并使用对象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
于 2014-04-19T13:18:25.187 回答