为列名添加一个字母

时间:2014-07-21 14:14:16

标签: r

我得到了一个包含六个变量的时间序列,我使用下面代码的第一行得到了它们的主要值,并删除了第二行的重复年份列。新数据有13列;一年一次,六个变量(称之为“设置1”)和六个主要变量(称之为“设置2”)。

我需要将set 2的列名替换为set 1的名称,并在开头添加“l”。我使用str_c包中的stringr函数,如第三列中所示,但它没有改变任何内容。

我用另一个数据集测试了这个函数,它工作正常。还检查了第三行的每个部分,两者都工作正常,但是当试图将一个分配给另一个时,它什么也没有给出;没有错误也没有变化。

s.ts<-sample %>% mutate_each(funs(lead(.,1))) %>% cbind(sample, .) # get the leading values beside the original
s.ts<-s.ts[,-8] # remove the repeted year column
colnames(s.ts[8:13])<-str_c("l", colnames(s.ts[2:7]))  # change the column names

1 个答案:

答案 0 :(得分:3)

应该是

colnames(s.ts)[8:13] <- str_c( "l", colnames(s.ts)[2:7] )

不同之处在于foo[ cols ]创建了foo的子集副本。致电时

colnames( foo[ cols ] ) <- newNames

您将新名称分配给此副本。它相当于:

foo <- data.frame(a = 1:5, b = LETTERS[1:5], c = rnorm(5))
bar <- foo[ 1:2 ]
colnames(bar) <- c("x", "y")
foo
bar