如何为 R 中的两个向量中的每个字符串值创建组合?
如果我们有两个字符串向量,每个向量包含两个以上的值,那么为这两个向量中的每个字符串值创建组合就变得有点困难。为此,我们可以使用do.callpaste0函数expand.grid,如下例所示。
示例
> x1<-LETTERS[1:10] > y1<-LETTERS[11:26] > do.call(paste0,expand.grid(x1,y1))输出结果
[1] "AK" "BK" "CK" "DK" "EK" "FK" "GK" "HK" "IK" "JK" "AL" "BL" "CL" "DL" "EL" [16] "FL" "GL" "HL" "IL" "JL" "AM" "BM" "CM" "DM" "EM" "FM" "GM" "HM" "IM" "JM" [31] "AN" "BN" "CN" "DN" "EN" "FN" "GN" "HN" "IN" "JN" "AO" "BO" "CO" "DO" "EO" [46] "FO" "GO" "HO" "IO" "JO" "AP" "BP" "CP" "DP" "EP" "FP" "GP" "HP" "IP" "JP" [61] "AQ" "BQ" "CQ" "DQ" "EQ" "FQ" "GQ" "HQ" "IQ" "JQ" "AR" "BR" "CR" "DR" "ER" [76] "FR" "GR" "HR" "IR" "JR" "AS" "BS" "CS" "DS" "ES" "FS" "GS" "HS" "IS" "JS" [91] "AT" "BT" "CT" "DT" "ET" "FT" "GT" "HT" "IT" "JT" "AU" "BU" "CU" "DU" "EU" [106] "FU" "GU" "HU" "IU" "JU" "AV" "BV" "CV" "DV" "EV" "FV" "GV" "HV" "IV" "JV" [121] "AW" "BW" "CW" "DW" "EW" "FW" "GW" "HW" "IW" "JW" "AX" "BX" "CX" "DX" "EX" [136] "FX" "GX" "HX" "IX" "JX" "AY" "BY" "CY" "DY" "EY" "FY" "GY" "HY" "IY" "JY" [151] "AZ" "BZ" "CZ" "DZ" "EZ" "FZ" "GZ" "HZ" "IZ" "JZ"
示例
> x2<-c("India","Russia","UK","China","USA","Egypt","Turkey") > y2<-c("Pakistan","Ukraine","Australia","Sri Lanka","Nepal","Sudan","Somalia","North Korea","Brunei") > do.call(paste0,expand.grid(x2,y2))输出结果
[1] "IndiaPakistan" "RussiaPakistan" "UKPakistan" [4] "ChinaPakistan" "USAPakistan" "EgyptPakistan" [7] "TurkeyPakistan" "IndiaUkraine" "RussiaUkraine" [10] "UKUkraine" "ChinaUkraine" "USAUkraine" [13] "EgyptUkraine" "TurkeyUkraine" "IndiaAustralia" [16] "RussiaAustralia" "UKAustralia" "ChinaAustralia" [19] "USAAustralia" "EgyptAustralia" "TurkeyAustralia" [22] "IndiaSri Lanka" "RussiaSri Lanka" "UKSri Lanka" [25] "ChinaSri Lanka" "USASri Lanka" "EgyptSri Lanka" [28] "TurkeySri Lanka" "IndiaNepal" "RussiaNepal" [31] "UKNepal" "ChinaNepal" "USANepal" [34] "EgyptNepal" "TurkeyNepal" "IndiaSudan" [37] "RussiaSudan" "UKSudan" "ChinaSudan" [40] "USASudan" "EgyptSudan" "TurkeySudan" [43] "IndiaSomalia" "RussiaSomalia" "UKSomalia" [46] "ChinaSomalia" "USASomalia" "EgyptSomalia" [49] "TurkeySomalia" "IndiaNorth Korea" "RussiaNorth Korea" [52] "UKNorth Korea" "ChinaNorth Korea" "USANorth Korea" [55] "EgyptNorth Korea" "TurkeyNorth Korea" "IndiaBrunei" [58] "RussiaBrunei" "UKBrunei" "ChinaBrunei" [61] "USABrunei" "EgyptBrunei" "TurkeyBrunei"
示例
> x3<-c("G1","G2","G3","G4","G5","G6") > y3<-c("S1","S2","S3","S4","S5") > do.call(paste0,expand.grid(x3,y3))输出结果
[1] "G1S1" "G2S1" "G3S1" "G4S1" "G5S1" "G6S1" "G1S2" "G2S2" "G3S2" "G4S2" [11] "G5S2" "G6S2" "G1S3" "G2S3" "G3S3" "G4S3" "G5S3" "G6S3" "G1S4" "G2S4" [21] "G3S4" "G4S4" "G5S4" "G6S4" "G1S5" "G2S5" "G3S5" "G4S5" "G5S5" "G6S5"
示例
> x4<-sample(c("India","Russia","UK","China","USA","Egypt","Turkey"),10,replace=TRUE) > x4输出结果
[1] "UK" "USA" "Egypt" "China" "USA" "India" "Turkey" "USA" [9] "Egypt" "UK"
示例
> y4<-sample(c("Pakistan","Ukraine","Australia","Sri Lanka","Nepal","Sudan","Somalia","North Korea","Brunei"),10,replace=TRUE) > y4输出结果
[1] "North Korea" "Ukraine" "Sri Lanka" "North Korea" "North Korea" [6] "North Korea" "Pakistan" "Somalia" "Sudan" "Pakistan"
示例
> do.call(paste0,expand.grid(x4,y4))输出结果
[1] "UKNorth Korea" "USANorth Korea" "EgyptNorth Korea" [4] "ChinaNorth Korea" "USANorth Korea" "IndiaNorth Korea" [7] "TurkeyNorth Korea" "USANorth Korea" "EgyptNorth Korea" [10] "UKNorth Korea" "UKUkraine" "USAUkraine" [13] "EgyptUkraine" "ChinaUkraine" "USAUkraine" [16] "IndiaUkraine" "TurkeyUkraine" "USAUkraine" [19] "EgyptUkraine" "UKUkraine" "UKSri Lanka" [22] "USASri Lanka" "EgyptSri Lanka" "ChinaSri Lanka" [25] "USASri Lanka" "IndiaSri Lanka" "TurkeySri Lanka" [28] "USASri Lanka" "EgyptSri Lanka" "UKSri Lanka" [31] "UKNorth Korea" "USANorth Korea" "EgyptNorth Korea" [34] "ChinaNorth Korea" "USANorth Korea" "IndiaNorth Korea" [37] "TurkeyNorth Korea" "USANorth Korea" "EgyptNorth Korea" [40] "UKNorth Korea" "UKNorth Korea" "USANorth Korea" [43] "EgyptNorth Korea" "ChinaNorth Korea" "USANorth Korea" [46] "IndiaNorth Korea" "TurkeyNorth Korea" "USANorth Korea" [49] "EgyptNorth Korea" "UKNorth Korea" "UKNorth Korea" [52] "USANorth Korea" "EgyptNorth Korea" "ChinaNorth Korea" [55] "USANorth Korea" "IndiaNorth Korea" "TurkeyNorth Korea" [58] "USANorth Korea" "EgyptNorth Korea" "UKNorth Korea" [61] "UKPakistan" "USAPakistan" "EgyptPakistan" [64] "ChinaPakistan" "USAPakistan" "IndiaPakistan" [67] "TurkeyPakistan" "USAPakistan" "EgyptPakistan" [70] "UKPakistan" "UKSomalia" "USASomalia" [73] "EgyptSomalia" "ChinaSomalia" "USASomalia" [76] "IndiaSomalia" "TurkeySomalia" "USASomalia" [79] "EgyptSomalia" "UKSomalia" "UKSudan" [82] "USASudan" "EgyptSudan" "ChinaSudan" [85] "USASudan" "IndiaSudan" "TurkeySudan" [88] "USASudan" "EgyptSudan" "UKSudan" [91] "UKPakistan" "USAPakistan" "EgyptPakistan" [94] "ChinaPakistan" "USAPakistan" "IndiaPakistan" [97] "TurkeyPakistan" "USAPakistan" "EgyptPakistan" [100] "UKPakistan"
示例
> x5<-c("Hot","Cold") > y5<-c("Summer","Spring","Winter","Rainy") > do.call(paste0,expand.grid(x5,y5))输出结果
[1] "HotSummer" "ColdSummer" "HotSpring" "ColdSpring" "HotWinter" [6] "ColdWinter" "HotRainy" "ColdRainy"