我正在尝试自动化一些繁琐的代码编写。我有如下内容:
Codes<-c("code1","code2","code3","code4")
other_Codes<-c("code5","code6","code7","code8")
我想创建的内容如下所示:
repetetivetext Code1 repetetivetext Code5
repetetivetext Code2 repetetivetext Code6
repetetivetext Code3 repetetivetext Code7
repetetivetext Code4 repetetivetext Code8
…所以第一个向量的第一个参数与第二个向量的第一个参数配对,以此类推。可以这样做:
paste0("repetetivetext ",Codes, "repetitive text ", other_Codes)
但由于不同的原因(实际代码比这更复杂),这不是一个可行的解决方案。我更愿意使用for循环或嵌套for循环的变体,它可以让我组合两个向量中的元素,但只给我4个组合,而不是16个。
有这样的变化吗?还是有我没想到的另一种方法?
你可以只使用一次迭代'for循环',也许你寻找这样的东西?:
Codes <- c("code1", "code2", "code3", "code4")
other_Codes <- c("code5", "code6", "code7", "code8")
output = c()
text = "repetetivetext "
for (j in 1:length(Codes)) {
element = paste0(text, Codes[j], text,other_Codes[j])
output = c(output, element)
}
output
如果您想将两个向量组合起来,这两个向量都由四个元素组成,得到所有16种组合,你必须根据另一个向量的长度乘以一个向量的元素。您可以使用purrr::map2
及其家族(例如purrr::map2_chr
)在(嵌套的)for循环中做到这一点。
library(purrr)
Codes <- c("code1", "code2", "code3", "code4")
other_Codes <- c("code5", "code6", "code7", "code8")
map2_chr(
.x = rep(Codes, each = length(other_Codes)),
.y = rep(other_Codes, times = length(Codes)),
~ paste0("repetetive text ", .x, " repetitive text ", .y)
)
# [1] "repetetive text code1 repetitive text code5"
# [2] "repetetive text code1 repetitive text code6"
# [3] "repetetive text code1 repetitive text code7"
# [4] "repetetive text code1 repetitive text code8"
# [5] "repetetive text code2 repetitive text code5"
# [6] "repetetive text code2 repetitive text code6"
# [7] "repetetive text code2 repetitive text code7"
# [8] "repetetive text code2 repetitive text code8"
# [9] "repetetive text code3 repetitive text code5"
# [10] "repetetive text code3 repetitive text code6"
# [11] "repetetive text code3 repetitive text code7"
# [12] "repetetive text code3 repetitive text code8"
# [13] "repetetive text code4 repetitive text code5"
# [14] "repetetive text code4 repetitive text code6"
# [15] "repetetive text code4 repetitive text code7"
# [16] "repetetive text code4 repetitive text code8"