如何将重复函数的输出绑定到 df - 矢量化

How to rbind output of repeated function to a df - vectorized

我到处都在读到你不应该在 R 中使用 for 循环,而应该这样做 'vectorized'。然而,我发现 for 循环很直观,并且很难转换我的代码。

我有一个要多次使用的函数 f1。该函数的输入位于名为 l1 的列表中。我的 f1 输出一个 df。我想将这些输出 dfs 绑定到一个 df 中。我现在的 for 循环是这样的:

z3 <- data.frame()
for(i in l1) {
  z3 <- rbind(z3, f1(i))
}

谁能帮我做同样的事情,但没有 for 循环?

您可以使用 lapply()do.call()

do.call(rbind, lapply(l1, f1))

另一种更详细的方法:

## function that returns a 1 x 2 dataframe:
get_fresh_straw <- function(x) data.frame(col1 = x, col2 = x * pi)

l1 = list(A = 1, B = 5, C = 2)

Reduce(l1,
       f = function(camel_back, list_item){
           rbind(camel_back, get_fresh_straw(list_item))
       },
       init = data.frame(col1 = NULL, col2 = NULL)
       )