【问题标题】:Remove quotes from a character vector in R?从R中的字符向量中删除引号?
【发布时间】:2015-03-01 08:20:52
【问题描述】:

我有一些文字:

version of mackinnon’s “dominance approach,”

我已经读入了一个字符向量:

> my.char.vector
[1] "version" "of" "mackinnon’s" "“dominance" "approach,”" 

如何删除双(和单)引号,这样 my.char.vector 是

[1] "version" "of" "mackinnons" "dominance" "approach," 

实际上,具有此确切标题的另一个问题不是问同样的问题 - 它试图在不带引号的情况下打印。我的字符向量中的元素确实包含引号,我正在尝试将其删除。

【问题讨论】:

    标签: regex r quotes


    【解决方案1】:

    这些是“花哨的”引号——我从屏幕上剪切并粘贴了它们(如果你只是使用 SHIFT-' [或键盘上的任何东西],你只会得到常规的 " 引号......)。

    mcv <- c("version","of","mackinnon’s","“dominance","approach,”")
    gsub("[’”“]","",mcv)
    

    另一种可能性(似乎在我的系统上工作,但可能?是系统/语言环境/等特定的?):将奇怪的字符转换为“#”,或其他安全的东西,然后摆脱它们。

    gsub("#","",iconv(mcv,"latin1","ASCII","#"))
    

    【讨论】:

      【解决方案2】:

      试试这个。

      gsub("[^[:print:]]", "", my.char.vector)
      

      【讨论】:

      • @BenBolker 使用Sys.setenv(LANG = "en_US.UTF-8") 并尝试。也许它与系统语言环境有关。
      【解决方案3】:

      您可以为此使用stringi。我们可以使用 ICU 元字符\\P 来否定匹配的值,使用-- 来减去逗号的否定。

      library(stringi)
      mcv <- c("version", "of", "mackinnon’s", "“dominance", "approach,”")
      stri_replace_all_regex(mcv, "[\\P{Ll}--,]", "")
      # [1] "version"    "of"         "mackinnons" "dominance"  "approach," 
      

      我只是在学习 ICU,但我认为这是正确的表达方式。

      【讨论】:

        【解决方案4】:

        qdap 的另一个选项

        library(qdap)
        strip(mcv, char.keep=',')
        #[1] "version"    "of"         "mackinnons" "dominance"  "approach," 
        

        或使用stringi

        library(stringi)
        stri_replace_all_regex(mcv, '[^[:alnum:],]+', '')
        #[1] "version"    "of"         "mackinnons" "dominance"  "approach," 
        

        base R

         vapply(regmatches(mcv,gregexpr('[A-Za-z,]+', mcv)), paste,
                                            collapse="", character(1L))
        #[1] "version"    "of"         "mackinnons" "dominance"  "approach," 
        

        数据

        mcv <- c("version","of","mackinnon’s","“dominance","approach,”")
        

        【讨论】:

          猜你喜欢
          • 2011-07-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-24
          • 2011-11-03
          • 2013-07-19
          相关资源
          最近更新 更多