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

Extract variable names from list or vector in R

假设:

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

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

提前致谢!

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"

但是,最好能有更多关于您想做的事情的背景信息。

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

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

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

names(list1)

您也可以通过使用 cbind:

调整 vect1 来实现
vect1 = cbind(aa,bb)
colnames(vect1)