亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否可以創建基于輸入對象名稱命名的列表?

是否可以創建基于輸入對象名稱命名的列表?

慕哥6287543 2019-07-27 14:23:52
是否可以創建基于輸入對象名稱命名的列表?能夠創建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)

唯一明顯的區別是在這種情況下,各個向量也有名稱。


查看完整回答
反對 回復 2019-07-27
?
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


查看完整回答
反對 回復 2019-07-27
?
智慧大石

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。)


查看完整回答
反對 回復 2019-07-27
  • 3 回答
  • 0 關注
  • 610 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號