从R中的列表或向量中提取变量名称

时间:2017-02-14 13:28:36

标签: r list vector extract variable-names

假设:

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

有没有办法从list1或vect1中将变量名称提取为字符串('aa','bb')? 这些信息是否存储在列表和向量中?如果没有,那么适当的格式是什么?

提前致谢!

3 个答案:

答案 0 :(得分:3)

对于你所做的情况,答案是否定的。但是,如果您准备对代码进行一些更改,那么您可以轻松获得它,

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

现在,您可以轻松访问形成list的变量名称的字符串版本,

names(list1)

答案 1 :(得分: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"

然而,最好有关于你想做什么的更多背景信息。

答案 2 :(得分:0)

您也可以通过使用 cbind 调整 vect1 来实现:

vect1 = cbind(aa,bb)
colnames(vect1)