我有两个关于在R中使用列表的问题,我正在尝试看看如何改进我的初学者解决方案。我在此处看到了类似主题的问题,但那里描述的方法并没有帮助。
问题1:
MWE:
a <- c(1:5)
b <- "adf"
c <- array(rnorm(9), dim = c(3,3) )
- 创建一个名为“packedList”的列表,同时保留所有变量的名称。
- 当前解决方案:
packedList <- list(a = a, b = b, c = c)
然而,如果变量数量很大(比如有20个变量),那么我的当前解决方案可能不是最好的。
这种思想在从函数返回大量变量时很有用。
Q2:
MWE:给定 packedList
,提取变量a,b,c。
- 我想要在保留它们的名称的同时,将给定列表中的所有元素提取到环境中。这是任务1的反向操作。
例如:在环境中给定变量packedList
,我可以按以下方式定义a、b和c:
a <- packedList$a
b <- packedList$b
c <- packedList$c
然而,如果变量的数量非常大,则我的解决方案可能会很繁琐。通过一些谷歌搜索,我找到了一个方法,但我不确定它是否是最优雅的解决方案。以下是该解决方案:
x <- packedList
for(i in 1:length(x)){
tempobj <- x[[i]]
eval(parse(text=paste(names(x)[[i]],"= tempobj")))
}