首先,我是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;。
我尝试了以下代码,但结果并非我所希望的。看起来pattern
和replacement
参数在输入向量上被回收:
> 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"
有没有办法通过一个命令实现相同的目标?
答案 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"