从一个字符串创建多个列表

Create multiple lists from a string

我想从字符串创建多个列表。例如,在处理一些数据和图表时,我喜欢保持工作流程整洁并将对象存储在列表中:

# For data
lstDta <- list()
# For charts
lstChrts <- list()

以相同的方式创建更多列表看起来乏味且重复,这不悦目。

问题

理想情况下,我想使用名称为以下的字符串创建列表:

mapply(assign, c("lstDta", "lstChrts"),
       rep(as.list(1),3), pos = 1)

可以理解,下面的代码returns错误:

    > mapply(assign, c("lstDta", "lstChrts"),
+        rep(as.list(NULL),2), pos = 1)
Error in mapply(assign, c("lstDta", "lstChrts"), rep(as.list(NULL), 2),  : 
  zero-length inputs cannot be mixed with those of non-zero length

可以运行,像这样:

mapply(assign, c("lstDta", "lstChrts"),
       rep(as.list(1),2), pos = 1)

但是创建的对象是numeric。我想要实现的目标归结为:获取这个字符向量并为每个值创建一个空列表。

这是一种方法:

sapply(c("lstDta", "lstChrts"), function(n) {
    assign(n, list(), envir = .GlobalEnv)
})

ls.str()
#lstChrts :  list()
#lstDta :  list()