R 在不重新键入对象名称的情况下创建列表列表
我有一个输出为列表的函数。对于我正在编写的包,用户将使用此函数创建大量列表。创建这些列表的顺序确实很重要。问题是:我需要这些列表的列表,按照正确的顺序(对象创建的顺序),我不想让用户再次声明列表对象。我想做的事情如下:R 在不重新键入对象名称的情况下创建列表列表,r,R,我有一个输出为列表的函数。对于我正在编写的包,用户将使用此函数创建大量列表。创建这些列表的顺序确实很重要。问题是:我需要这些列表的列表,按照正确的顺序(对象创建的顺序),我不想让用户再次声明列表对象。我想做的事情如下: # Approach 1 list_of_lists <- list( m1 <- function_that_makes_list(arg1, arg2) m2 <- function_that_makes_list( arg3, arg4) m3 <
# Approach 1
list_of_lists <- list(
m1 <- function_that_makes_list(arg1, arg2)
m2 <- function_that_makes_list( arg3, arg4)
m3 <- function_that_makes_list( arg5, arg6)
)
方法1
列表的列表我可能误解了你的问题,但这里有两种方法假设你的最终用户动态创建这些函数调用,即你不知道创建列表的时间和数量:
# toyfunction:
funlist <- function(){
return(list(rnorm(1)) )
}
funlist()
# [[1]]
# [1] 0.8481468
#玩具功能:
funlist我可能误解了您的问题,但这里有两种方法假设您的最终用户动态创建这些函数调用,即您不知道何时以及创建了多少列表:
# toyfunction:
funlist <- function(){
return(list(rnorm(1)) )
}
funlist()
# [[1]]
# [1] 0.8481468
#玩具功能:
funlist您的选项1需要逗号(见下文)
下面是一个返回列表的函数
fx <- function() {return(list())}
这样做的优点是可以通过编程方式访问这些名称
nestedList <- list(m1=fx(), m2=fx(), m3=fx())
names(nestedList)
# [1] "m1" "m2" "m3"
nestedList您的选项1需要逗号(见下文)
下面是一个返回列表的函数
fx <- function() {return(list())}
这样做的优点是可以通过编程方式访问这些名称
nestedList <- list(m1=fx(), m2=fx(), m3=fx())
names(nestedList)
# [1] "m1" "m2" "m3"
nestedList我相信这可以用lappy(1:n,构成列表的函数)
的形式来解决。lappy(1:n,…)不起作用,因为函数有两个参数,它们都不是1:n。我相信这可以用lappy(1:n,构成列表的函数)
.lappy(1:n,…)将不起作用,因为函数接受两个参数,并且它们都不是1:n。
list(m1=fx(), m2=fx(), m3=fx())
# $m1
# list()
# $m2
# list()
# $m3
# list()
nestedList <- list(m1=fx(), m2=fx(), m3=fx())
names(nestedList)
# [1] "m1" "m2" "m3"
m1 <- m2 <- m3 <- fx() # just for simplicity
list(m1, m2, m3)
# [output identical to your option 1]