【问题标题】:how can replace using gsub?如何使用 gsub 替换?
【发布时间】:2016-06-22 09:56:04
【问题描述】:

我有如下数据,我想替换colnames

da

    ..B1  ..B2 ..B3
a      1     2    1
b      1     1    1

首选输出:

      B1    B2   B3
a      1     2    1
b      1     1    1

我使用了这个命令,但它不起作用:

da=gsub(pattern = "..", replacement = "", x = colnames(da))

【问题讨论】:

    标签: r dataframe gsub


    【解决方案1】:

    . 是表示任何字符的元字符。所以,如果我们使用

     gsub("..", "", x= colnames(da))
    

    结果是

    #[1] "" "" ""
    

    因为所有字符都被删除了。我们需要使用fixed = TRUE 或转义.

    colnames(da) <- gsub("..", "", x= colnames(da), fixed=TRUE)
    colnames(da)
    #[1] "B1" "B2" "B3"
    
    gsub("\\.+", "", colnames(da))
    #[1] "B1" "B2" "B3"
    

    【讨论】:

    • 非常感谢,您的最后一个命令运行良好。但是我可以用行名和值更改列名吗,比如输出?
    • @tob 如果你想用行名更改列名,colnames(da) &lt;- rownames(da)
    • @akrun 请关闭括号 gsub("..", "", x= colnames(da)
    • @Arunkumarmahesh 谢谢你,很好的观察!
    【解决方案2】:

    以下方法也可以:

    da<-data.frame(..B1=c(1,1), ..B2=c(2,1), ..B3=c(1,1))
    
    colnames(da) <- gsub("[.]","", x=colnames(da))
    

    附带说明,这将删除名称中任何位置的任何句点;在某些情况下,您不希望这样。以下将删除开头的两个句点:

    colnames(da) <- gsub("^..","", x=colnames(da))
    

    【讨论】:

      【解决方案3】:

      函数 [[:punct:]] 用于删除标点符号**: ! " # $ % & ' ( ) * + , - . / : ; ?@ [ \ ] ^ _ ` { | }**

      colnames(da) <- gsub("[[:punct:]]","",colnames(da))
      > da
            B1 B2 B3
          1  1  2  1
          2  1  1  1    
      

      【讨论】:

        猜你喜欢
        • 2013-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-13
        • 1970-01-01
        • 2023-03-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多