如果能够创建一个R列表对象,而不必指定每个元素的名称,这将对我非常有帮助.例如:
a1 <- 1
a2 <- 20
a3 <- 1:20
b <- list(a1,a2,a3, inherit.name=TRUE)
> b
[[a1]]
[1] 1
[[a2]]
[1] 20
[[a3]]
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
这将是理想的.有什么建议吗?
如果能够创建一个R列表对象,而不必指定每个元素的名称,这将对我非常有帮助.例如:
a1 <- 1
a2 <- 20
a3 <- 1:20
b <- list(a1,a2,a3, inherit.name=TRUE)
> b
[[a1]]
[1] 1
[[a2]]
[1] 20
[[a3]]
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
这将是理想的.有什么建议吗?
巧合的是,我刚刚编写了这个函数.它看起来很像@joran的解决方案,但它尽量不践踏已经命名的参数.
namedList <- function(...) {
L <- list(...)
snm <- sapply(substitute(list(...)),deparse)[-1]
if (is.null(nm <- names(L))) nm <- snm
if (any(nonames <- nm=="")) nm[nonames] <- snm[nonames]
setNames(L,nm)
}
## TESTING:
a <- b <- c <- 1
namedList(a,b,c)
namedList(a,b,d=c)
namedList(e=a,f=b,d=c)
摘自 comments :如果你想从CRAN软件包中获得一些东西,你可以使用Hmisc::llist
:
Hmisc::llist(a, b, c, d=a, labels = FALSE)
唯一明显的区别是,在本例中,各个向量也有名称.