从字符串创建多个列表

时间:2016-03-18 15:42:06

标签: r list mapply

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

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

以相同的方式创建更多列表看起来很无聊和重复,这对于眼睛来说并不令人愉快。

问题

理想情况下,我想使用名称为

的字符串创建列表
mapply(assign, c("lstDta", "lstChrts"),
       rep(as.list(1),3), pos = 1)

可以理解,下面的代码会返回错误:

    > 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。我想要实现的目标归结为:获取此字符向量并为每个值创建一个空列表。

1 个答案:

答案 0 :(得分:2)

这是一种方法:

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

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