R 如何用子字符串替换多个列名

R 如何用子字符串替换多个列名,r,substring,multiple-columns,rename,R,Substring,Multiple Columns,Rename,我想用substring()编辑多个列名。只有我写的代码不起作用 奇怪的是,下面的代码可以正常工作。 旧列名: oldColNames <- names(forcesdf[,c(5:20)]) newColNames <- substring(names(forcesdf[,c(5:20)]), 1, 4) oldColNames <- newColNames 以及新的列名: oldColNames <- names(forcesdf[,c(5:20)]) newC

我想用substring()编辑多个列名。只有我写的代码不起作用

奇怪的是,下面的代码可以正常工作。 旧列名:

oldColNames <- names(forcesdf[,c(5:20)])
newColNames <- substring(names(forcesdf[,c(5:20)]), 1, 4)
oldColNames <- newColNames
以及新的列名:

oldColNames <- names(forcesdf[,c(5:20)])
newColNames <- substring(names(forcesdf[,c(5:20)]), 1, 4)
oldColNames <- newColNames
当然,我想更改数据框中的列名,所以最初,我编写了以下代码,但列名没有更改

names(forcesdf[,c(5:20)]) <- substring(names(forcesdf[,c(5:20)]), 1, 4)

> names(forcesdf[,c(5:20)])
[1] "2000 [YR2000]" "2001 [YR2001]" "2002 [YR2002]" "2003 [YR2003]" "2004 [YR2004]" "2005 [YR2005]" "2006 [YR2006]"
[8] "2007 [YR2007]" "2008 [YR2008]" "2009 [YR2009]" "2010 [YR2010]" "2011 [YR2011]" "2012 [YR2012]" "2013 [YR2013]"
[15] "2014 [YR2014]" "2015 [YR2015]"
名称(forcesdf[,c(5:20)])名称(forcesdf[,c(5:20)])
[1] “2000[YR2000]”“2001[YR2001]”“2002[YR2002]”“2003[YR2003]”“2004[YR2004]”“2005[YR2005]”“2006[YR2006]。”
[8] “2007[YR2007]”“2008[YR2008]”“2009[YR2009]”“2010[YR2010]”“2011[YR2011]”“2012[YR2012]”“2013[YR2013]”
[15] “2014年[2014年]”2015年[2015年]“
测试这个

names(forcesdf)[5:20] <- substring(names(forcesdf[,c(5:20)]), 1, 4)

名称(forcesdf)[5:20]如果您:

names(forcesdf)[5:20] <- substring(names(forcesdf)[5:20], 1, 4)
名称(forcesdf)[5:20]