【发布时间】:2018-05-07 08:07:53
【问题描述】:
我正在尝试更改数据框中的列名。我想结合eval(as.name(paste())) 使用字符串值来选择数据框。
这是我的代码:
list <-c("a","b","c","d")
for (i in 1: length(list) )
{
assign(paste("tf_", list[i], "_0", sep=""), as.data.frame( ifelse ( !is.na( Data[[list[i]]] ),1,0 ) ) )
names(eval(as.name(paste("tf_", list[i], "_0", sep=""))))<-"blablabla"
}
当我使用 names(eval(as.name(paste("tf_", list[i], "_0", sep="")))) 部分时,它返回给我预期的名称,但是当我想分配不同的名称字符串值时,它显示错误:分配目标扩展到非语言对象
【问题讨论】:
-
您能否提供一个我们可以合作的
Data示例? -
Data是一个不同的数据框,它具有多个列,其中一些列被命名为"a","b","c","d"。分配部分工作正常。问题是当我想更改名为paste("tf_", list[i], "_0", sep="")的新数据框的列名时 -
如果你想改变
data.frame的列名,你可以直接这样做:colnames(Data) <- listifData的列号和list的长度相同。 -
尝试将
2nd行更改为:'df = get(paste("tf_", list[i], "_0", sep="")); df = "blablabla" -
@MKR 4 你的意思是
colnames(df)="blablabla"