R删除特殊字符并重复下划线

时间:2017-10-02 18:16:10

标签: r regex

我有一个包含空格和其他标点字符的数据集。我试图用" _"替换空格和特殊字符。这会产生多个" _"串起来,所以我也想通过使用here描述的以下功能来删除它们:

removeSpace <- function(x){
    class1 <- class(x)
    x <- as.character(x)
    x <- gsub(" |&|-|/|'|(|)",'_', x) # convert special characters to _
    x <- gsub("([_])\\1+","\\1", x)   # convert multiple _ to single _

    if(class1 == 'character'){
        return(x)
    }
    if(class1 == 'factor'){
        return(as.factor(x))
    }
}

问题不是删除空格而是替换为&#34; _&#34;它用&#34; _&#34;做其他所有角色。 (即&#34;测试&#34; - &gt;&#34; t_e_s_t&#34;)

我做错了什么?

1 个答案:

答案 0 :(得分:10)

您不需要运行两个单独的替换来完成此操作。只需在匹配模式中添加[-/&'() ]+量词。

匹配:_

替换为:|

另请注意,我使用了字符集,而不是使用<!DOCTYPE html> <html ng-app="myApp"> <head> <script data-require="angular.js@1.6.1" data-semver="1.6.1" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.js"></script> <link rel="stylesheet" href="style.css" /> <script src="script.js"></script> </head> <body ng-controller="myCtrl"> <h1>My Favourite X-Men's</h1> <sample-component data="Jack"></sample-component> <!-- this works --> <cast-tile cast="mutants"></cast-tile> <!-- does not work --> </body> </html> 在每个选项之间切换。当匹配多个单个字符中的一个时,这通常是更好的方法。