R,stringr - 使用单个命令

时间:2018-02-12 16:50:35

标签: r stringr

首先,我是R的新手并且编程一般,所以如果这是一个愚蠢的问题我会道歉。

我有一个类似的字符向量:

> vec <- rep(c("XabcYdef", "XghiYjkl"), each = 3)
> vec
[1] "XabcYdef" "XabcYdef" "XabcYdef" "XghiYjkl" "XghiYjkl" "XghiYjkl"

使用stringr包,我想放弃领先的&#34; X&#34;并替换&#34; Y&#34;用&#34; - &#34;。

我尝试了以下代码,但结果并非我所希望的。看起来patternreplacement参数在输入向量上被回收:

> str_replace(vec, c("X", "Y"), c("", "-"))
[1] "abcYdef"  "Xabc-def" "abcYdef"  "Xabc-def" "abcYdef"  "Xabc-def"

我可以实现2次调用函数所需的结果:

> vec <- rep(c("XabcYdef", "XghiYjkl"), each = 3)
> vec <- str_replace(vec, "X", "")
> vec <- str_replace(vec, "Y", "-")
> vec
[1] "abc-def" "abc-def" "abc-def" "ghi-jkl" "ghi-jkl" "ghi-jkl"

有没有办法通过一个命令实现相同的目标?

1 个答案:

答案 0 :(得分:6)

str_replace_all可以使用匹配矢量替换:

str_replace_all(vec, c("X" = "", "Y" = "-"))
[1] "abc-def" "abc-def" "abc-def" "ghi-jkl" "ghi-jkl" "ghi-jkl"