我得到了一个包含六个变量的时间序列,我使用下面代码的第一行得到了它们的主要值,并删除了第二行的重复年份列。新数据有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
答案 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