2014-06-11 4 views
1

사이의 문자열의 조합을 생성 한 쉽게 이와 같은 그룹 사이의 문자열의 조합을 생성 할 수 있습니다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" 
관련 문제