String R:字符串的变量名

String R:字符串的变量名,string,r,variables,String,R,Variables,有一些简单的解决方案,例如: > deparse(substitute(data)) [1] "data" 但是,当我想从列表中提取姓名时,它不太起作用: > deparse(substitute(names(data)[1])) [1] "names(data)[1]" 所以问题是,我想把它作为列表/数据框/数值中的每个变量的一般解决方案,我把它输入到某个函数中。我希望看到这些变量的名称作为输出数据框的列名 例如: foo <- function(...) { d

有一些简单的解决方案,例如:

> deparse(substitute(data))
[1] "data"
但是,当我想从列表中提取姓名时,它不太起作用:

> deparse(substitute(names(data)[1]))
[1] "names(data)[1]"
所以问题是,我想把它作为列表/数据框/数值中的每个变量的一般解决方案,我把它输入到某个函数中。我希望看到这些变量的名称作为输出数据框的列名

例如:

foo <- function(...) { 
   data <- list(...)
## some magic here ##
   names(output_df) <- ?? 
   output_df
}
foo显然,上述“?”应替换为:

setdiff(as.character(match.call(expand.dots=TRUE)), 
        as.character(match.call(expand.dots=FALSE)))
通过完全扩展的示例:

num_vec <- as.numeric(1:10)
list1 <- 1:10
list2 <- 11:20
list_data <- list(list1, list2)
df_data <- data.frame(list1, list2)

foo <- function(...) {
  input_list <- list(...)
  name_vec <- setdiff(as.character(match.call(expand.dots=TRUE)), 
                      as.character(match.call(expand.dots=FALSE)))
  output_df <- list()
  for(i in 1:length(input_list)) {
    output_df <- c(output_df, input_list[i])
  }
  output_df <- data.frame(output_df)
  names(output_df) <- name_vec
  output_df
}

foo(num_vec, list_data[[1]], df_data[[1]], df_data$list2)

   num_vec list_data[[1]] df_data[[1]] df_data$list2
1        1              1            1            11
2        2              2            2            12
3        3              3            3            13
4        4              4            4            14
5        5              5            5            15
6        6              6            6            16
7        7              7            7            17
8        8              8            8            18
9        9              9            9            19
10      10             10           10            20

num\u vec将这一点具体化。很难确切地理解你想要实现什么。用一些虚构的数据做一个非常简单的示例。。。。e、 g.
数据它相当简单。拉入函数的输入数据并不总是具有names属性。但是变量的名称本身提供了足够的信息来帮助实现这一点。所以我想要的是将变量名提取为字符串向量,稍后将作为names属性应用于输出数据frame.Right。好啊举个例子。。。我想您希望得到回答。您正在寻找
name()
函数吗?如果你没有,你应该提供一个例子,就像西蒙说的。这就是你要寻找的“魔法”吗?