迭代数据框中的列名

时间:2010-07-29 15:11:45

标签: r

在循环中,我试图在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"))

我不知道错误的含义,但没有更改列标题。

有什么想法吗?

谢谢,

罗伯特

2 个答案:

答案 0 :(得分:0)

根据assign函数的帮助,第一个参数是变量的名称,以字符串形式给出。没有强制执行,并且将使用长度大于1的字符向量的第一个元素,并带有警告

答案 1 :(得分:-1)

assign将变量名称作为字符串。 get返回一个变量,而不是它的名字。

为了试图嘲讽R众神,这里有一个函数,它接受一个字符串和一个字符串列表,并将字符串列表分配给指定数据框的名称。

foo <- function(df, lon) {
  temp <- get(df)
  names(temp) <- lon
  assign(df, temp, inherits = TRUE)
}

如果没有副本,应该有办法。

相关问题