2017-08-15 4 views
0

Je souhaite modifier plusieurs noms de colonnes avec la sous-chaîne(). Seul le code que j'ai écrit ne fonctionne pas.Comment remplacer plusieurs noms de colonnes par une sous-chaîne

Bizarrement, le code suivant fonctionne. noms de colonnes Vieux:

oldColNames <- names(forcesdf[,c(5:20)]) 

résultats dans:

> 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]" 

Et les nouveaux noms de colonne:

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

résultats dans ce que je veux excually:

> oldColNames 
[1] "2000" "2001" "2002" "2003" "2004" "2005" "2006" "2007" "2008" "2009" "2010" "2011" "2012" "2013" "2014" "2015" 

de Bien sûr, je veux changer les noms des colonnes dans mon dataframe donc initialement, j'ai écrit le code suivant mais les colnames n'ont pas changé.

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]" 

Répondre

1

Test cette

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

Vous pouvez les changer si vous le faites:

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

Je pense que la clé est que dans votre code que vous sous-ensembles les noms de colonnes, mais pas référence à leur.