如何从字符向量中提取包含 $ 符号的元素
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.chvec2
、website.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 = "\\$")]
【讨论】:
以上是关于如何从字符向量中提取包含 $ 符号的元素的主要内容,如果未能解决你的问题,请参考以下文章