在循环中,我试图在df中执行简单的变量重命名。
没有循环,这很有效:
names(c1) <- c("sales", "month")
使用循环友好的方法(在干运行示例中代替i的“1”),以下正确引用名称(c1):
names(get(paste("c","1", sep="")))
但是当我编写整个操作时,我得到的错误是“只有第一个元素用作变量名”,这里是代码:
assign(names(get(paste("c","1", sep=""))), c("sales", "month"))
我不知道错误的含义,但没有更改列标题。
有什么想法吗?
谢谢,
罗伯特
答案 0 :(得分:0)
根据assign函数的帮助,第一个参数是变量的名称,以字符串形式给出。没有强制执行,并且将使用长度大于1的字符向量的第一个元素,并带有警告
答案 1 :(得分:-1)
assign
将变量名称作为字符串。 get
返回一个变量,而不是它的名字。
为了试图嘲讽R众神,这里有一个函数,它接受一个字符串和一个字符串列表,并将字符串列表分配给指定数据框的名称。
foo <- function(df, lon) {
temp <- get(df)
names(temp) <- lon
assign(df, temp, inherits = TRUE)
}
如果没有副本,应该有办法。