R 变量作为数据框中的列名

R 变量作为数据框中的列名,r,R,有没有办法将存储在变量中的字符串用作新数据框中的列名?预期结果应该是: col.name <- 'col1' df <- data.frame(col.name=1:4) print(df) # Real output col.name 1 1 2 2 3 3 4 4 # Expected output col1 1 1 2 2 3 3 4 4 col.name不能将变量传递到这样的参数名称

有没有办法将存储在变量中的字符串用作新数据框中的列名?预期结果应该是:

col.name <- 'col1'
df <- data.frame(col.name=1:4)
print(df)

# Real output
  col.name
1        1
2        2
3        3
4        4

# Expected output
  col1
1    1
2    2
3    3
4    4

col.name不能将变量传递到这样的参数名称中

相反,您可以做的是:

df <- data.frame(placeholder_name = 1:4)
names(df)[names(df) == "placeholder_name"] <- col.name
或按职位分配:

df <- data.frame(1:4)
names(df)[1] <- col.name
magrittr
包中还有
set\u names
功能,您可以使用该功能一步完成最后一个解决方案:

library(magrittr)
df <- set_names(data.frame(1:4), col.name)

这是base R的一部分。弄清楚这个表达式为什么有效并有意义将是一个很好的练习。

我不建议您这样做,但是:

col.name <- 'col1'
eval(parse(text=paste0('data.frame(', col.name, '=1:4)')))

col.name除了ssdecontrol的答案之外,还有第二个选项

您正在寻找
mget
。首先为变量指定名称,然后为先前指定的变量指定值。之后,mget将计算字符串并将其传递给data.frame

assign(col.name, "col1")
assign(paste(col.name), 1:4)

df <- data.frame(mget(col.name))
print(df)
  col1
1    1
2    2
3    3
4    4
assign(col.name,“col1”)
分配(粘贴(列名称),1:4)

df
data.frame(col1=1:4)
将为您提供“预期输出”@Jeff,但他想从一个变量传递
“col1”
。顺便说一句,我已将此问题标记为转移到堆栈溢出,因为它是关于在R中编程,而不是关于统计。哦,是的,对不起,我误读了,您的答案涵盖了这种情况下的所有内容(+1)这确实是一种非常糟糕的方式。解析任意文本值是危险的,应该避免。此外,还有来自
base R的
setNames
df <- `names<-`(data.frame(1:4), col.name)
col.name <- 'col1'
eval(parse(text=paste0('data.frame(', col.name, '=1:4)')))
assign(col.name, "col1")
assign(paste(col.name), 1:4)

df <- data.frame(mget(col.name))
print(df)
  col1
1    1
2    2
3    3
4    4