在R中的两个列表上同时循环

时间:2017-06-13 10:17:47

标签: r loops

我编写了一个带有三个参数的函数:

create.template <- function(t.list, x, y){
    temp <- cbind(get(t.list[x]), get(t.list[y]), NA)
}

此函数的输出是一个包含11列和17行的data.frame。

现在我想在函数上创建一个带有两个列表的循环,一个用于x,一个用于y。从而

x.list <- list(1,2,3)
y.list <- list(4,5,6)

在最后一步中,我想建立像

这样的东西
for (x in x.list and y in y.list){
   create.template(t.list, x, y)
}

并且可能在最终的一个数据帧中以行的方式组合结果数据帧(每个数据帧为3个数据帧)。

我知道您可以使用zip()函数在Python中执行此操作,然后通过append()和concatenate()轻松附加结果,但到目前为止我还没有找到R中的等效项。任何帮助都非常感谢!

1 个答案:

答案 0 :(得分:0)

我们可以使用mget获取多个对象的值,使用Reducedo.callcbind list vectors < / p>

Reduce(cbind, c(mget(ls(pattern = "\\.list")), NA))

do.call(cbind, c(mget(c("x.list", "y.list")), NA))