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]