【问题标题】:How to extract elements that include $ sign from a character vector如何从字符向量中提取包含 $ 符号的元素
【发布时间】:2023-03-04 11:09:01
【问题描述】:

假设R输出如下:

 > website.fund.chvec1

  [1] ""         "LOGIN"          "or"             "SIGN"           "UP "          
      ""         "The"            "Team:"          ""              
 [10] "$74,810"  "TOTAL"          "RAISED"         "SO"             "$14,530"      

我想从字符向量website.fund.chvec1 中提取包含$ 符号的每个元素。有什么办法吗?我的意思是,除了website.fund.chvec1,我还有website.fund.chvec2website.fund.chvec3等,包括$符号在内的元素索引并不总是10和14....

谢谢你:)

【问题讨论】:

    标签: r


    【解决方案1】:

    是的,很简单:

    grep('\\$', website.fund.chvec)
    

    grep 搜索正则表达式,所以我需要转义正则表达式中的特殊字符$ 符号。或者,您可以使用

    grep('$', website.fund.chvec, fixed = TRUE)
    

    使grep 按原样处理搜索模式。

    【讨论】:

    • 如果要获取元素而不是索引,可以添加value=TRUE
    • 谢谢 :) 我试过 grep('$', website.fund.chvec) 但结果不是我想要的所以我在这里问....现在我知道我应该写 '\\$' 而不是 '$'.... "\\" 到底是做什么的?
    • @user2871333 "$" 是正则表达式中的特殊字符(用于表示字符串的结尾)。所以你必须用“\”转义它。但是 R 将字符串中的 "\" 视为特殊的,所以你用另一个 "\" 转义它,你会得到 "\\$"。您在此处的第二个示例中看到的fixed 参数告诉grep 使用正则表达式,在这种情况下“$”不再特殊,因此不再需要转义。
    【解决方案2】:
    require(stringr)
    website.fund.chvec[str_detect(website.fund.chvec, pattern = "\\$")]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      • 1970-01-01
      • 2022-06-14
      • 1970-01-01
      • 2019-07-30
      • 2018-05-13
      相关资源
      最近更新 更多