是否可以创建基于输入对象名称命名的列表?能够创建R列表对象而不必指定每个元素的名称对我非常有帮助。例如:a1 <- 1a2 <- 20a3 <- 1:20b <- 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这将是理想的。有什么建议?
3 回答
浮云间
TA贡献1829条经验 获得超4个赞
巧合的是,我刚刚写了这个函数。它看起来很像@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 <- 1namedList(a,b,c)namedList(a,b,d=c)namedList(e=a,f=b,d=c)
复制评论:如果你想要一个CRAN包的东西,你可以使用Hmisc::llist
:
Hmisc::llist(a, b, c, d=a, labels = FALSE)
唯一明显的区别是在这种情况下,各个向量也有名称。
qq_笑_17
TA贡献1818条经验 获得超7个赞
该tidyverse软件包tibble具有可以执行此操作的功能。试用tibble::lst
tibble::lst(a1, a2, a3)
# $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
智慧大石
TA贡献1946条经验 获得超3个赞
一个随意的想法:
a1<-1a2<-20a3<-1:20my_list <- function(...){ names <- as.list(substitute(list(...)))[-1L] result <- list(...) names(result) <- names result}> my_list(a1,a2,a3)$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
(这个想法是从代码中偷来的data.frame
。)
- 3 回答
- 0 关注
- 580 浏览
添加回答
举报
0/150
提交
取消