2017-02-14 76 views
1

變量名假設:提取從列表或向量中的R

aa = c('A','B','C') 
bb = c('D','E','F') 
list1 = list(aa,bb) 
vect1 = c(aa,bb) 

有一種方法來提取的變量名作爲字符串(「AA」,「BB」)從任一list1的或vect1? 這個信息被存儲在列表和向量中嗎?如果不是,那麼適當的格式是什麼?

在此先感謝!

+3

不。爲此,我相信你會需要'list1 = list(aa = aa,bb = bb)'然後做'names(list1)',同樣的,vector可以命名爲'c(aa = aa,bb = BB)'。 –

回答

1
aa = c('A','B','C') 
bb = c('D','E','F') 
list1 = list(aa,bb) 
vect1 = c(aa,bb) 

簡短的回答是否定的。如果你看看dput(list1)dput(vect1)的結果,你會看到,這些對象不包含該信息的任何更多:

list(c("A", "B", "C"), c("D", "E", "F")) 
c("A", "B", "C", "D", "E", "F") 

有你可以得到這個信息,這是當表達式的一種方式被傳遞給函數:

f <- function(x) { 
    d <- substitute(x) 
    n <- sapply(d[-1],deparse) 
    return(n) 
} 
f(c(aa,bb)) 
## [1] "aa" "bb" 

然而,這將是件好事,你想要做什麼更多的上下文。

1

對於情況你所做的答案是否定的。但是,如果你準備做在你的代碼的一些變化,那麼你可以很容易地得到它,

list1 <- list(aa = aa, bb = bb) 

現在,您可以輕鬆地訪問從其形成list的變量名的字符串版本,

names(list1)