2014-06-11 150 views
1

在bash之間串的組合可以很容易地產生像這樣的羣體之間的字符串組合:R:生成組

> 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" 

謝謝!

+2

你很親密,你只需要在第一次嘗試時使用'each ='(而不是默認的'times =')。 'paste(rep(c(「A」,「B」),each = 2),c(「1」,「2」),「S」,「R」,sep =「_」)' – MrFlick

+0

啊!如果只有我按下了功能上的選項卡,我可能會看到該選項。謝謝! – afrendeiro

回答

1

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" 
+0

非常感謝! – afrendeiro

1

好吧,我想通了一個辦法,但它似乎不太明顯/有效。

如果您找到更好的方法,請添加您的答案。

> 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"