如何将向量拆分为 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

以上是 如何将向量拆分为 R 中连续值的较小向量? 的全部内容, 来源链接: utcz.com/z/317243.html

回到顶部