【发布时间】:2015-07-28 18:54:52
【问题描述】:
我有两个与在 R 中使用列表有关的问题,我正在尝试了解如何改进我的幼稚解决方案。我在这里看到了关于similar topic 的问题,但是那里描述的方法没有帮助。
第一季度:
MWE:
a <- c(1:5)
b <- "adf"
c <- array(rnorm(9), dim = c(3,3) )
- 制作一个列表,名称为“packedList”,同时保留名称 所有变量。
- 当前解决方案:
packedList <- list(a = a, b = b, c = c)
但是,如果变量的数量(上述问题中的三个,即a, b, c)是
大(假设我们有 20 个变量),那么我当前的解决方案可能不是
最好的。
这个想法在返回大量变量时很有用 一个函数。
第二季度:
MWE:给定packedList,提取变量a、b、c
- 我想将给定列表(即 packedList)中的所有元素提取到环境中,同时保留它们的名称。这与任务 1 相反。
例如:给定环境中的变量 packedList,我可以定义 a、b、c 如下:
a <- packedList$a
b <- packedList$b
c <- packedList$c
但是,如果变量的数量非常多,那么我的解决方案可能会很麻烦。 - 在谷歌搜索后,我找到了one solution,但我也不确定它是否是最优雅的解决方案。解决方法如下图:
x <- packedList
for(i in 1:length(x)){
tempobj <- x[[i]]
eval(parse(text=paste(names(x)[[i]],"= tempobj")))
}
【问题讨论】:
-
你可以使用 r 中的 zeallot 包进行解包。图书馆(狂热者) c(a,b,c) % a [1] 1 > b [1] 2 > c [1] 3