loc_split(x, locs, names = NULL, ...)"loc_split"(x, locs, names = NULL, ...)"loc_split"(x, locs, names = NULL, ...)"loc_split"(x, locs, names = NULL, ...)"loc_split"(x, locs, names = NULL, ...)"loc_split"(x, locs, names = NULL, ...)"loc_split"(x, locs, names = NULL, ...)"loc_split"(x, locs, names = NULL, ...)
list
, vector
, data.frame
,
matrix
).locs
contains the index 1, it will be silently dropped.locs
.
Split data forms at specified integer locations.
Two dimensional object will retain dimension (i.e., drop = FALSE
is used).
## character loc_split(LETTERS, c(4, 10, 16))[[1]] [1] "A" "B" "C" [[2]] [1] "D" "E" "F" "G" "H" "I" [[3]] [1] "J" "K" "L" "M" "N" "O" [[4]] [1] "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"loc_split(LETTERS, c(4, 10, 16), c("dog", "cat", "chicken", "rabbit"))$dog [1] "A" "B" "C" $cat [1] "D" "E" "F" "G" "H" "I" $chicken [1] "J" "K" "L" "M" "N" "O" $rabbit [1] "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"## numeric loc_split(1:100, c(33, 66))[[1]] [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 [[2]] [1] 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 [[3]] [1] 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 [31] 96 97 98 99 100## factor (p_chng <- head(1 + cumsum(rle(as.character(CO2[["Plant"]]))[[1]]), -1))[1] 8 15 22 29 36 43 50 57 64 71 78loc_split(CO2[["Plant"]], p_chng)[[1]] [1] Qn1 Qn1 Qn1 Qn1 Qn1 Qn1 Qn1 Levels: Qn1 < Qn2 < Qn3 < Qc1 < Qc3 < Qc2 < Mn3 < Mn2 < Mn1 < Mc2 < Mc3 < Mc1 [[2]] [1] Qn2 Qn2 Qn2 Qn2 Qn2 Qn2 Qn2 Levels: Qn1 < Qn2 < Qn3 < Qc1 < Qc3 < Qc2 < Mn3 < Mn2 < Mn1 < Mc2 < Mc3 < Mc1 [[3]] [1] Qn3 Qn3 Qn3 Qn3 Qn3 Qn3 Qn3 Levels: Qn1 < Qn2 < Qn3 < Qc1 < Qc3 < Qc2 < Mn3 < Mn2 < Mn1 < Mc2 < Mc3 < Mc1 [[4]] [1] Qc1 Qc1 Qc1 Qc1 Qc1 Qc1 Qc1 Levels: Qn1 < Qn2 < Qn3 < Qc1 < Qc3 < Qc2 < Mn3 < Mn2 < Mn1 < Mc2 < Mc3 < Mc1 [[5]] [1] Qc2 Qc2 Qc2 Qc2 Qc2 Qc2 Qc2 Levels: Qn1 < Qn2 < Qn3 < Qc1 < Qc3 < Qc2 < Mn3 < Mn2 < Mn1 < Mc2 < Mc3 < Mc1 [[6]] [1] Qc3 Qc3 Qc3 Qc3 Qc3 Qc3 Qc3 Levels: Qn1 < Qn2 < Qn3 < Qc1 < Qc3 < Qc2 < Mn3 < Mn2 < Mn1 < Mc2 < Mc3 < Mc1 [[7]] [1] Mn1 Mn1 Mn1 Mn1 Mn1 Mn1 Mn1 Levels: Qn1 < Qn2 < Qn3 < Qc1 < Qc3 < Qc2 < Mn3 < Mn2 < Mn1 < Mc2 < Mc3 < Mc1 [[8]] [1] Mn2 Mn2 Mn2 Mn2 Mn2 Mn2 Mn2 Levels: Qn1 < Qn2 < Qn3 < Qc1 < Qc3 < Qc2 < Mn3 < Mn2 < Mn1 < Mc2 < Mc3 < Mc1 [[9]] [1] Mn3 Mn3 Mn3 Mn3 Mn3 Mn3 Mn3 Levels: Qn1 < Qn2 < Qn3 < Qc1 < Qc3 < Qc2 < Mn3 < Mn2 < Mn1 < Mc2 < Mc3 < Mc1 [[10]] [1] Mc1 Mc1 Mc1 Mc1 Mc1 Mc1 Mc1 Levels: Qn1 < Qn2 < Qn3 < Qc1 < Qc3 < Qc2 < Mn3 < Mn2 < Mn1 < Mc2 < Mc3 < Mc1 [[11]] [1] Mc2 Mc2 Mc2 Mc2 Mc2 Mc2 Mc2 Levels: Qn1 < Qn2 < Qn3 < Qc1 < Qc3 < Qc2 < Mn3 < Mn2 < Mn1 < Mc2 < Mc3 < Mc1 [[12]] [1] Mc3 Mc3 Mc3 Mc3 Mc3 Mc3 Mc3 Levels: Qn1 < Qn2 < Qn3 < Qc1 < Qc3 < Qc2 < Mn3 < Mn2 < Mn1 < Mc2 < Mc3 < Mc1## list loc_split(as.list(LETTERS), c(4, 10, 16))[[1]] [[1]][[1]] [1] "A" [[1]][[2]] [1] "B" [[1]][[3]] [1] "C" [[2]] [[2]][[1]] [1] "D" [[2]][[2]] [1] "E" [[2]][[3]] [1] "F" [[2]][[4]] [1] "G" [[2]][[5]] [1] "H" [[2]][[6]] [1] "I" [[3]] [[3]][[1]] [1] "J" [[3]][[2]] [1] "K" [[3]][[3]] [1] "L" [[3]][[4]] [1] "M" [[3]][[5]] [1] "N" [[3]][[6]] [1] "O" [[4]] [[4]][[1]] [1] "P" [[4]][[2]] [1] "Q" [[4]][[3]] [1] "R" [[4]][[4]] [1] "S" [[4]][[5]] [1] "T" [[4]][[6]] [1] "U" [[4]][[7]] [1] "V" [[4]][[8]] [1] "W" [[4]][[9]] [1] "X" [[4]][[10]] [1] "Y" [[4]][[11]] [1] "Z"## data.frame (vs_change <- head(1 + cumsum(rle(as.character(mtcars[["vs"]]))[[1]]), -1))[1] 3 5 6 7 8 12 18 22 26 27 28 29 32loc_split(mtcars, vs_change)[[1]] mpg cyl disp hp drat wt qsec vs am gear carb Mazda RX4 21 6 160 110 3.9 2.620 16.46 0 1 4 4 Mazda RX4 Wag 21 6 160 110 3.9 2.875 17.02 0 1 4 4 [[2]] mpg cyl disp hp drat wt qsec vs am gear carb Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 [[3]] mpg cyl disp hp drat wt qsec vs am gear carb Hornet Sportabout 18.7 8 360 175 3.15 3.44 17.02 0 0 3 2 [[4]] mpg cyl disp hp drat wt qsec vs am gear carb Valiant 18.1 6 225 105 2.76 3.46 20.22 1 0 3 1 [[5]] mpg cyl disp hp drat wt qsec vs am gear carb Duster 360 14.3 8 360 245 3.21 3.57 15.84 0 0 3 4 [[6]] mpg cyl disp hp drat wt qsec vs am gear carb Merc 240D 24.4 4 146.7 62 3.69 3.19 20.0 1 0 4 2 Merc 230 22.8 4 140.8 95 3.92 3.15 22.9 1 0 4 2 Merc 280 19.2 6 167.6 123 3.92 3.44 18.3 1 0 4 4 Merc 280C 17.8 6 167.6 123 3.92 3.44 18.9 1 0 4 4 [[7]] mpg cyl disp hp drat wt qsec vs am gear carb Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3 Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3 Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3 Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4 Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4 Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4 [[8]] mpg cyl disp hp drat wt qsec vs am gear carb Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1 Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2 Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 [[9]] mpg cyl disp hp drat wt qsec vs am gear carb Dodge Challenger 15.5 8 318 150 2.76 3.520 16.87 0 0 3 2 AMC Javelin 15.2 8 304 150 3.15 3.435 17.30 0 0 3 2 Camaro Z28 13.3 8 350 245 3.73 3.840 15.41 0 0 3 4 Pontiac Firebird 19.2 8 400 175 3.08 3.845 17.05 0 0 3 2 [[10]] mpg cyl disp hp drat wt qsec vs am gear carb Fiat X1-9 27.3 4 79 66 4.08 1.935 18.9 1 1 4 1 [[11]] mpg cyl disp hp drat wt qsec vs am gear carb Porsche 914-2 26 4 120.3 91 4.43 2.14 16.7 0 1 5 2 [[12]] mpg cyl disp hp drat wt qsec vs am gear carb Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.9 1 1 5 2 [[13]] mpg cyl disp hp drat wt qsec vs am gear carb Ford Pantera L 15.8 8 351 264 4.22 3.17 14.5 0 1 5 4 Ferrari Dino 19.7 6 145 175 3.62 2.77 15.5 0 1 5 6 Maserati Bora 15.0 8 301 335 3.54 3.57 14.6 0 1 5 8 [[14]] mpg cyl disp hp drat wt qsec vs am gear carb Volvo 142E 21.4 4 121 109 4.11 2.78 18.6 1 1 4 2## matrix (mat <- matrix(1:50, nrow=10))[,1] [,2] [,3] [,4] [,5] [1,] 1 11 21 31 41 [2,] 2 12 22 32 42 [3,] 3 13 23 33 43 [4,] 4 14 24 34 44 [5,] 5 15 25 35 45 [6,] 6 16 26 36 46 [7,] 7 17 27 37 47 [8,] 8 18 28 38 48 [9,] 9 19 29 39 49 [10,] 10 20 30 40 50loc_split(mat, c(3, 6, 10))[[1]] [,1] [,2] [,3] [,4] [,5] [1,] 1 11 21 31 41 [2,] 2 12 22 32 42 [[2]] [,1] [,2] [,3] [,4] [,5] [1,] 3 13 23 33 43 [2,] 4 14 24 34 44 [3,] 5 15 25 35 45 [[3]] [,1] [,2] [,3] [,4] [,5] [1,] 6 16 26 36 46 [2,] 7 17 27 37 47 [3,] 8 18 28 38 48 [4,] 9 19 29 39 49 [[4]] [,1] [,2] [,3] [,4] [,5] [1,] 10 20 30 40 50