【问题标题】:How do I replace multiple column names with substring如何用子字符串替换多个列名
【发布时间】:2018-01-23 08:01:45
【问题描述】:

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

奇怪的是,以下代码有效。 旧列名:

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

结果:

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

以及新的列名:

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

得到我特别想要的结果:

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

当然,我想更改数据框中的列名,所以最初我编写了以下代码,但列名没有改变。

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 substring multiple-columns rename


    【解决方案1】:

    测试一下

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

    【讨论】:

      【解决方案2】:

      如果你这样做,你可以改变它们:

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

      我认为关键是在您的代码中,您将列名设置为子集,但不引用它们。

      【讨论】:

        猜你喜欢
        • 2017-12-06
        • 2011-09-01
        • 2015-11-09
        • 2016-10-26
        • 2016-12-03
        • 2019-11-20
        • 2016-09-10
        • 2016-03-24
        相关资源
        最近更新 更多