在bash中可以很容易地生成组之间的字符串组合,如下所示:
> echo {'A','B'}_{'1','2'}_S_R
A_1_S_R A_2_S_R B_1_S_R B_2_S_R
有人知道如何在R中生成这样的字符串组合吗?
我尝试了以下操作,但它似乎只重复第一个元素而不重复第二个元素。
paste(rep(c("A", "B"), 2), c("1", "2"), "S", "R", sep = "_")
[1] "A_1_S_R" "B_2_S_R" "A_1_S_R" "B_2_S_R"
paste(rep(c("A", "B"), 2), rep(c("1", "2"), 2), "S", "R", sep = "_")
[1] "A_1_S_R" "B_2_S_R" "A_1_S_R" "B_2_S_R"
谢谢!
outer
通常是正确的函数,当你试图组合组合。
paste(outer(LETTERS[1:2], 1:2, paste, sep="_"), "_S_R", sep="")
[1] "A_1_S_R" "B_1_S_R" "A_2_S_R" "B_2_S_R"
好吧,我想到了一个办法,但似乎不是很明显/有效。
如果你找到更好的方法,请加上你的答案。
> df<-expand.grid(c("A", "B"), c("1", "2"), "S", "R")
> paste(df[,1],df[,2], df[,3],df[,4],sep="_")
[1] "A_1_S_R" "B_1_S_R" "A_2_S_R" "B_2_S_R"