如何将向量拆分为 R 中连续值的较小向量?
要将向量拆分为连续值的较小向量,我们可以使用带有cumsum函数的拆分函数。
例如,如果我们有一个名为X的向量,其中包含一些连续值,那么我们使用下面给出的命令将X拆分为连续值的较小向量-
split(x,cumsum(c(1,diff(x)!=1)))
示例1
以下代码段创建了一个向量-
x1<-c(1:10,11:18,27:40,51:60,71:99,101:111,126:136,158:173,211:222,289:305,321:334) x1
创建以下向量-
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 27 28 29 30 31 32 33 34 35 36 37 38 39 40 51 52 53 54 [37] 55 56 57 58 59 60 71 72 73 74 75 76 77 78 79 80 81 82 [55] 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 101 [73] 102 103 104 105 106 107 108 109 110 111 126 127 128 129 130 131 132 133 [91] 134 135 136 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 [109] 173 211 212 213 214 215 216 217 218 219 220 221 222 289 290 291 292 293 [127] 294 295 296 297 298 299 300 301 302 303 304 305 321 322 323 324 325 326 [145] 327 328 329 330 331 332 333 334
为了将x1拆分为较小的连续值向量,请将以下代码添加到上述代码段中-
x1<-c(1:10,11:18,27:40,51:60,71:99,101:111,126:136,158:173,211:222,289:305,321:334) split(x1,cumsum(c(1,diff(x1)!=1)))输出结果
如果您将上述所有给定的代码片段作为单个程序执行,它会生成以下输出:-
$`1` [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 $`2` [1] 27 28 29 30 31 32 33 34 35 36 37 38 39 40 $`3` [1] 51 52 53 54 55 56 57 58 59 60 $`4` [1] 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 [26] 96 97 98 99 $`5` [1] 101 102 103 104 105 106 107 108 109 110 111 $`6` [1] 126 127 128 129 130 131 132 133 134 135 136 $`7` [1] 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 $`8` [1] 211 212 213 214 215 216 217 218 219 220 221 222 $`9` [1] 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 $`10` [1] 321 322 323 324 325 326 327 328 329 330 331 332 333 334
示例2
以下代码段创建了一个向量-
x2<-c(-100:-89,-79:-65,-50:-41,-31:-21,-15:-1,0:10,15:18,22:40,55:67,75:89,96:105) x2
创建以下向量-
[1] -100 -99 -98 -97 -96 -95 -94 -93 -92 -91 -90 -89 -79 -78 -77 [16] -76 -75 -74 -73 -72 -71 -70 -69 -68 -67 -66 -65 -50 -49 -48 [31] -47 -46 -45 -44 -43 -42 -41 -31 -30 -29 -28 -27 -26 -25 -24 [46] -23 -22 -21 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 [61] -3 -2 -1 0 1 2 3 4 5 6 7 8 9 10 15 [76] 16 17 18 22 23 24 25 26 27 28 29 30 31 32 33 [91] 34 35 36 37 38 39 40 55 56 57 58 59 60 61 62 [106] 63 64 65 66 67 75 76 77 78 79 80 81 82 83 84 [121] 85 86 87 88 89 96 97 98 99 100 101 102 103 104 105
为了将x2拆分为较小的连续值向量,请将以下代码添加到上述代码段中-
x2<-c(-100:-89,-79:-65,-50:-41,-31:-21,-15:-1,0:10,15:18,22:40,55:67,75:89,96:105) split(x2,cumsum(c(1,diff(x2)!=1)))输出结果
如果您将上述所有给定的片段作为单个程序执行,它会生成以下输出-
$`1` [1] -100 -99 -98 -97 -96 -95 -94 -93 -92 -91 -90 -89 $`2` [1] -79 -78 -77 -76 -75 -74 -73 -72 -71 -70 -69 -68 -67 -66 -65 $`3` [1] -50 -49 -48 -47 -46 -45 -44 -43 -42 -41 $`4` [1] -31 -30 -29 -28 -27 -26 -25 -24 -23 -22 -21 $`5` [1] -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 [20] 4 5 6 7 8 9 10 $`6` [1] 15 16 17 18 $`7` [1] 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 $`8` [1] 55 56 57 58 59 60 61 62 63 64 65 66 67 $`9` [1] 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 $`10` [1] 96 97 98 99 100 101 102 103 104 105