How to concatenate string vectors separated with hyphen in R?



The concatenation of string vectors will create combination of the values in the vectors thus, we can use them for interaction between/among the vectors. In R, we can use expand.grid along with apply to create such type of combinations as shown in the below examples.

Example 1

 Live Demo

x1<-c("India","Russia","China")
y1<-c("UK","USA","Canada")
apply(expand.grid(x1,y1),1,paste,collapse="-")

Output

[1] "India-UK" "Russia-UK" "China-UK" "India-USA"
[5] "Russia-USA" "China-USA" "India-Canada" "Russia-Canada"
[9] "China-Canada"

Example 2

 Live Demo

x2<-c("Hot","Cold")
y2<-c("Summer","Winter","Spring")
apply(expand.grid(x2,y2),1,paste,collapse="-")

Output

[1] "Hot-Summer" "Cold-Summer" "Hot-Winter" "Cold-Winter" "Hot-Spring"
[6] "Cold-Spring"

Example 3

x3<-c("G1","G2","G3","G4","G5")
y3<-c("S1","S2","S3","S4")
z3<-c("P1","P2","P3","P4","P5")
apply(expand.grid(x3,y3,z3),1,paste,collapse="-")

Output

[1]  "G1-S1-P1" "G2-S1-P1" "G3-S1-P1" "G4-S1-P1" "G5-S1-P1" "G1-S2-P1"
[7]  "G2-S2-P1" "G3-S2-P1" "G4-S2-P1" "G5-S2-P1" "G1-S3-P1" "G2-S3-P1"
[13] "G3-S3-P1" "G4-S3-P1" "G5-S3-P1" "G1-S4-P1" "G2-S4-P1" "G3-S4-P1"
[19] "G4-S4-P1" "G5-S4-P1" "G1-S1-P2" "G2-S1-P2" "G3-S1-P2" "G4-S1-P2"
[25] "G5-S1-P2" "G1-S2-P2" "G2-S2-P2" "G3-S2-P2" "G4-S2-P2" "G5-S2-P2"
[31] "G1-S3-P2" "G2-S3-P2" "G3-S3-P2" "G4-S3-P2" "G5-S3-P2" "G1-S4-P2"
[37] "G2-S4-P2" "G3-S4-P2" "G4-S4-P2" "G5-S4-P2" "G1-S1-P3" "G2-S1-P3"
[43] "G3-S1-P3" "G4-S1-P3" "G5-S1-P3" "G1-S2-P3" "G2-S2-P3" "G3-S2-P3"
[49] "G4-S2-P3" "G5-S2-P3" "G1-S3-P3" "G2-S3-P3" "G3-S3-P3" "G4-S3-P3"
[55] "G5-S3-P3" "G1-S4-P3" "G2-S4-P3" "G3-S4-P3" "G4-S4-P3" "G5-S4-P3"
[61] "G1-S1-P4" "G2-S1-P4" "G3-S1-P4" "G4-S1-P4" "G5-S1-P4" "G1-S2-P4"
[67] "G2-S2-P4" "G3-S2-P4" "G4-S2-P4" "G5-S2-P4" "G1-S3-P4" "G2-S3-P4"
[73] "G3-S3-P4" "G4-S3-P4" "G5-S3-P4" "G1-S4-P4" "G2-S4-P4" "G3-S4-P4"
[79] "G4-S4-P4" "G5-S4-P4" "G1-S1-P5" "G2-S1-P5" "G3-S1-P5" "G4-S1-P5"
[85] "G5-S1-P5" "G1-S2-P5" "G2-S2-P5" "G3-S2-P5" "G4-S2-P5" "G5-S2-P5"
[91] "G1-S3-P5" "G2-S3-P5" "G3-S3-P5" "G4-S3-P5" "G5-S3-P5" "G1-S4-P5"
[97] "G2-S4-P5" "G3-S4-P5" "G4-S4-P5" "G5-S4-P5"

Example 4

x4<-c("Male","Female")
y4<-c("Tall","Short")
z4<-c("1000 to 2000","2001 to 5000","5001 to 10000",">10000")
a4<-c("Y1","Y2","Y3","Y4","Y5","Y6")
apply(expand.grid(x4,y4,z4,a4),1,paste,collapse="-")

Output

[1]  "Male-Tall-1000 to 2000-Y1" "Female-Tall-1000 to 2000-Y1"
[3]  "Male-Short-1000 to 2000-Y1" "Female-Short-1000 to 2000-Y1"
[5]  "Male-Tall-2001 to 5000-Y1" "Female-Tall-2001 to 5000-Y1"
[7]  "Male-Short-2001 to 5000-Y1" "Female-Short-2001 to 5000-Y1"
[9]  "Male-Tall-5001 to 10000-Y1" "Female-Tall-5001 to 10000-Y1"
[11] "Male-Short-5001 to 10000-Y1" "Female-Short-5001 to 10000-Y1"
[13] "Male-Tall->10000-Y1" "Female-Tall->10000-Y1"
[15] "Male-Short->10000-Y1" "Female-Short->10000-Y1"
[17] "Male-Tall-1000 to 2000-Y2" "Female-Tall-1000 to 2000-Y2"
[19] "Male-Short-1000 to 2000-Y2" "Female-Short-1000 to 2000-Y2"
[21] "Male-Tall-2001 to 5000-Y2" "Female-Tall-2001 to 5000-Y2"
[23] "Male-Short-2001 to 5000-Y2" "Female-Short-2001 to 5000-Y2"
[25] "Male-Tall-5001 to 10000-Y2" "Female-Tall-5001 to 10000-Y2"
[27] "Male-Short-5001 to 10000-Y2" "Female-Short-5001 to 10000-Y2"
[29] "Male-Tall->10000-Y2" "Female-Tall->10000-Y2"
[31] "Male-Short->10000-Y2" "Female-Short->10000-Y2"
[33] "Male-Tall-1000 to 2000-Y3" "Female-Tall-1000 to 2000-Y3"
[35] "Male-Short-1000 to 2000-Y3" "Female-Short-1000 to 2000-Y3"
[37] "Male-Tall-2001 to 5000-Y3" "Female-Tall-2001 to 5000-Y3"
[39] "Male-Short-2001 to 5000-Y3" "Female-Short-2001 to 5000-Y3"
[41] "Male-Tall-5001 to 10000-Y3" "Female-Tall-5001 to 10000-Y3"
[43] "Male-Short-5001 to 10000-Y3" "Female-Short-5001 to 10000-Y3"
[45] "Male-Tall->10000-Y3" "Female-Tall->10000-Y3"
[47] "Male-Short->10000-Y3" "Female-Short->10000-Y3"
[49] "Male-Tall-1000 to 2000-Y4" "Female-Tall-1000 to 2000-Y4"
[51] "Male-Short-1000 to 2000-Y4" "Female-Short-1000 to 2000-Y4"
[53] "Male-Tall-2001 to 5000-Y4" "Female-Tall-2001 to 5000-Y4"
[55] "Male-Short-2001 to 5000-Y4" "Female-Short-2001 to 5000-Y4"
[57] "Male-Tall-5001 to 10000-Y4" "Female-Tall-5001 to 10000-Y4"
[59] "Male-Short-5001 to 10000-Y4" "Female-Short-5001 to 10000-Y4"
[61] "Male-Tall->10000-Y4" "Female-Tall->10000-Y4"
[63] "Male-Short->10000-Y4" "Female-Short->10000-Y4"
[65] "Male-Tall-1000 to 2000-Y5" "Female-Tall-1000 to 2000-Y5"
[67] "Male-Short-1000 to 2000-Y5" "Female-Short-1000 to 2000-Y5"
[69] "Male-Tall-2001 to 5000-Y5" "Female-Tall-2001 to 5000-Y5"
[71] "Male-Short-2001 to 5000-Y5" "Female-Short-2001 to 5000-Y5"
[73] "Male-Tall-5001 to 10000-Y5" "Female-Tall-5001 to 10000-Y5"
[75] "Male-Short-5001 to 10000-Y5" "Female-Short-5001 to 10000-Y5"
[77] "Male-Tall->10000-Y5" "Female-Tall->10000-Y5"
[79] "Male-Short->10000-Y5" "Female-Short->10000-Y5"
[81] "Male-Tall-1000 to 2000-Y6" "Female-Tall-1000 to 2000-Y6"
[83] "Male-Short-1000 to 2000-Y6" "Female-Short-1000 to 2000-Y6"
[85] "Male-Tall-2001 to 5000-Y6" "Female-Tall-2001 to 5000-Y6"
[87] "Male-Short-2001 to 5000-Y6" "Female-Short-2001 to 5000-Y6"
[89] "Male-Tall-5001 to 10000-Y6" "Female-Tall-5001 to 10000-Y6"
[91] "Male-Short-5001 to 10000-Y6" "Female-Short-5001 to 10000-Y6"
[93] "Male-Tall->10000-Y6" "Female-Tall->10000-Y6"
[95] "Male-Short->10000-Y6" "Female-Short->10000-Y6"

Advertisements