是否可以創(chuàng)建基于輸入對(duì)象名稱命名的列表?能夠創(chuàng)建R列表對(duì)象而不必指定每個(gè)元素的名稱對(duì)我非常有幫助。例如: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貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
巧合的是,我剛剛寫了這個(gè)函數(shù)。它看起來很像@joran的解決方案,但它試圖不踩已經(jīng)命名的參數(shù)。
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)
復(fù)制評(píng)論:如果你想要一個(gè)CRAN包的東西,你可以使用Hmisc::llist
:
Hmisc::llist(a, b, c, d=a, labels = FALSE)
唯一明顯的區(qū)別是在這種情況下,各個(gè)向量也有名稱。

qq_笑_17
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊
該tidyverse軟件包tibble具有可以執(zhí)行此操作的功能。試用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貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超3個(gè)贊
一個(gè)隨意的想法:
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
(這個(gè)想法是從代碼中偷來的data.frame
。)
- 3 回答
- 0 關(guān)注
- 606 瀏覽
添加回答
舉報(bào)
0/150
提交
取消