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()
函数吗?如果你没有,你应该提供一个例子,就像西蒙说的。这就是你要寻找的“魔法”吗?