gpt4 book ai didi

r - 如何在 R 中自动制作列表列表

转载 作者:行者123 更新时间:2023-12-02 07:40:31 25 4
gpt4 key购买 nike

我可以手工制作这个列表:

list( list(n=1) , list(n=2), list(n=3) )

但是我如何自动执行此操作,例如,如果我希望 n 达到 10?我尝试了 as.list(1:10),首先它是一种不同类型的数据结构,其次我不知道如何指定 n。

我希望答案可以扩展到多个元素列表,例如1:3 和 c('A','B') 的所有组合:

list( list(n=1,z='A') , list(n=2,z='A'), list(n=3,z='A'),
list(n=1,z='B') , list(n=2,z='B'), list(n=3,z='B') )

背景:我将按照以下方式使用它:lapply( outer_list, function(params) do.call(FUN,params) )

更新:很难选择给哪个答案打勾。我选择了 expand.grid 方法,因为它可以更轻松地扩展到两个以上的参数;注释中显示的 mapply 的使用使上面的两个示例看起来相当紧凑和可读:

outer_list=with( expand.grid(n=1:10,stringsAsFactors=F),
mapply(list, n=n, SIMPLIFY=F)
)

outer_list=with( expand.grid(n=1:3,z=c('A','Z'), stringsAsFactors=F),
mapply(list, n=n, z=z, SIMPLIFY=F)
)

它们违反了 DRY 原则,在 mapply() 调用中重复参数名称,这让我有些困扰。因此,当它足够困扰我时,我将使用 alply 调用,如 Sebastian 的回答所示。

最佳答案

您不需要使用 expand.grid 进行扩展。

L <- mapply(function(x, y) list("n"=x,"z"=y),
rep(1:10, each=10), LETTERS[1:10],
SIMPLIFY=FALSE)

编辑(见下方评论)

L <- mapply(function(x, y) list("n"=x,"z"=y),
rep(1:10, each=length(LETTERS[1:10])), LETTERS[1:10],
SIMPLIFY=FALSE)

关于r - 如何在 R 中自动制作列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11685169/

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