如何从字符向量中提取包含 $ 符号的元素

Posted

技术标签:

【中文标题】如何从字符向量中提取包含 $ 符号的元素【英文标题】:How to extract elements that include $ sign from a character vector 【发布时间】:2013-10-26 11:23:56 【问题描述】:

假设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....

谢谢你:)

【问题讨论】:

【参考方案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 = "\\$")]

【讨论】:

以上是关于如何从字符向量中提取包含 $ 符号的元素的主要内容,如果未能解决你的问题,请参考以下文章

从 Unicode 字符串中正确提取表情符号

使用正则表达式从字符串中提取数字和符号

从字符串中提取单个(无符号)整数

如何从字符向量中解析 CSV 数据以提取数据框?

从字符串中提取单词 - 微妙的问题

如何将字节数据从套接字写入 C 中的无符号字符向量? [关闭]