R:str_replace_all函数没有转换" 2010-12-31 + 10"到" 2011-01-10"

时间:2013-10-04 09:13:28

标签: r dataframe stringr

我有一个这样的字符串:

str1 <- "get all securities in portfolio port1 on date 2010-12-31 where field value of Close on 2010-12-31+10 less than 2000"

我想在str1中将“2010-12-31 + 10”转换为“2011-01-10”。 我尝试了str_replace_all包的stringr方法 但我没有得到输出。

> str_replace_all(str1,"2010-12-31+10","2011-01-10")
[1] "get all securities in portfolio port1 on date 2010-12-31 where field value of Close on 2010-12-31+10 less than 2000"

这是什么原因?

1 个答案:

答案 0 :(得分:3)

str_replace_all的第二个参数不是字符串而是正则表达式。因此,您必须转义在regexp中具有特殊含义的+等符号:

R> str_replace_all(str1,"2010-12-31\\+10","2011-01-10")
[1] "get all securities in portfolio port1 on date 2010-12-31 where field value of Close on 2011-01-10 less than 2000"

或者您可以使用fixed的{​​{1}}函数使其与您的模式匹配为常规字符串:

stringr