【发布时间】:2019-09-05 09:32:21
【问题描述】:
我有一个包含三个字符串的向量,它们都包含子字符串“X”:
v<- c("kpX_43", "kpX_10", "kpX_11")
“X”是一个占位符,由“1”、“2”、“3”或“a1”填充。现在,我尝试用“1”、“2”、“3”和“a1”替换“X”。此外,我必须添加一个“a”和一个“b”,从而得到以下向量:
> v_new
[1] "kp1_43a" "kp1_10a" "kp1_11a" "kp2_43a" "kp2_10a" "kp2_11a" "kp3_43a" "kp3_10a" "kp3_11a" "kp1_43b" "kpa1_10a" "kpa1_11a" "kpa1_43b" "kp1_10b" "kp1_11b" "kp2_43b" "kp2_10b" "kp2_11b" "kp3_43b" "kp3_10b" "kp3_11b" "kpa1_10b" "kpa1_11b" "kpa1_43b"
我应该使用 dyplr 和 purrr 来执行此操作。
好的,到目前为止我尝试过的内容如下:
strings<- as.matrix(c(seq(1:3), "a1"))
v_new <- v %>%
map(., ~str_c(., letters[seq(from = 1, to = 2)])) %>%
map(function(x) {
str_replace_all(., "X" , strings)}) %>%
unlist()
... 结果是:
> v_new
[1] "c(\"kp1_43a\", \"kp1_43b\")" "c(\"kp2_10a\", \"kp2_10b\")" "c(\"kp3_11a\", \"kp3_11b\")" "c(\"kpa1_43a\", \"kpa1_43b\")"
[5] "c(\"kp1_43a\", \"kp1_43b\")" "c(\"kp2_10a\", \"kp2_10b\")" "c(\"kp3_11a\", \"kp3_11b\")" "c(\"kpa1_43a\", \"kpa1_43b\")"
[9] "c(\"kp1_43a\", \"kp1_43b\")" "c(\"kp2_10a\", \"kp2_10b\")" "c(\"kp3_11a\", \"kp3_11b\")" "c(\"kpa1_43a\", \"kpa1_43b\")"
...有几个警告,全部阅读:
Warning messages:
1: In stri_replace_all_regex(string, pattern, fix_replacement(replacement), :argument is not an atomic vector; coercing
所以,虽然结果已经有点接近我想要的输出,但我的代码/我的方法显然有问题。谁能帮帮我?
【问题讨论】:
标签: r string loops replace purrr