gpt4 book ai didi

rbind 从 R 中没有循环的函数返回的列表

转载 作者:行者123 更新时间:2023-12-04 00:57:50 29 4
gpt4 key购买 nike

在 R 中,对于一个输入是一个变量而输出是一个列表的函数,我如何将该函数应用于输入列表并将输出列表合并到一个数据框或矩阵中?

例如:

fun = function(x){
list = c(x, x+1, x+2)
return(list)
}

现在我想将 fun() 应用于列表,比如

list = c(1,11,21)

结果应该是

1,2,3
11,12,13
21,22,23

我知道 do.call 和 loop 会做。但是有没有更好的方法,也许没有循环?实际函数太大太慢,我宁愿不循环。

最佳答案

我们可以使用lapply:

do.call(rbind, lapply(list, fun))

# [,1] [,2] [,3]
#[1,] 1 2 3
#[2,] 11 12 13
#[3,] 21 22 23

如果您返回一个命名列表,您可以使用 purrr 中的 map.* 函数代替数字向量。

fun = function(x){
list = list(a = x, b = x+1, c = x+2)
return(list)
}

purrr::map_df(list, fun)
#OR
#purrr::map_dfr(list, fun)

# a b c
# <dbl> <dbl> <dbl>
#1 1 2 3
#2 11 12 13
#3 21 22 23

关于rbind 从 R 中没有循环的函数返回的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60882206/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com