有效地找到R中的起始编号和终止编号的向量之间的序列

问题描述

我在R中有两个向量,例如start_valuesend_values,其中包含递增值的编号元素。例如:

start_values <- c(88,241,394,545)
end_values <- c(147,300,453,604)

我正在尝试找到一种高效的方法(希望没有编写循环),该方法将允许我获得一个单一的数字向量,其向量序列范围从start_values的第一个元素到第一个元素end_values,然后从start_values中的第二个元素到end_values中的第二个元素,依此类推。因此,最后,我想要一个称为sequence_range的向量,它看起来像这个:

sequence_range <- c(seq(88,147),seq(241,300),seq(394,453),seq(545,604))

应该具有如下输出:

> sequence_range
  [1]  88  89  90  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
 [30] 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
 [59] 146 147 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267
 [88] 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296
[117] 297 298 299 300 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418
[146] 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447
[175] 448 449 450 451 452 453 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567
[204] 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596
[233] 597 598 599 600 601 602 603 604

对于能有效完成此操作的有效技术的任何构想,我将不胜感激,以便将其推广到起始值和最终值的任意两个向量。

谢谢。

解决方法

您可以在:个向量的apply中使用cbind

as.vector(apply(cbind(start_values,end_values),1,function(x) x[1]:x[2]))
# [1]  88  89  90  91  92  93  94  95  96  97  98  99 100 101
# [15] 102 103 104 105 106 107 108 109 110 111 112 113 114 115
# [29] 116 117 118 119 120 121 122 123 124 125 126 127 128 129
# [43] 130 131 132 133 134 135 136 137 138 139 140 141 142 143
# [57] 144 145 146 147 241 242 243 244 245 246 247 248 249 250
# [71] 251 252 253 254 255 256 257 258 259 260 261 262 263 264
# [85] 265 266 267 268 269 270 271 272 273 274 275 276 277 278
# [99] 279 280 281 282 283 284 285 286 287 288 289 290 291 292
# [113] 293 294 295 296 297 298 299 300 394 395 396 397 398 399
# [127] 400 401 402 403 404 405 406 407 408 409 410 411 412 413
# [141] 414 415 416 417 418 419 420 421 422 423 424 425 426 427
# [155] 428 429 430 431 432 433 434 435 436 437 438 439 440 441
# [169] 442 443 444 445 446 447 448 449 450 451 452 453 545 546
# [183] 547 548 549 550 551 552 553 554 555 556 557 558 559 560
# [197] 561 562 563 564 565 566 567 568 569 570 571 572 573 574
# [211] 575 576 577 578 579 580 581 582 583 584 585 586 587 588
# [225] 589 590 591 592 593 594 595 596 597 598 599 600 601 602
# [239] 603 604
,

mapply运行良好:

> as.vector(mapply(seq,start_values,end_values))
  [1]  88  89  90  91  92  93  94  95  96  97  98  99 100 101
 [15] 102 103 104 105 106 107 108 109 110 111 112 113 114 115
 [29] 116 117 118 119 120 121 122 123 124 125 126 127 128 129
 [43] 130 131 132 133 134 135 136 137 138 139 140 141 142 143
 [57] 144 145 146 147 241 242 243 244 245 246 247 248 249 250
 [71] 251 252 253 254 255 256 257 258 259 260 261 262 263 264
 [85] 265 266 267 268 269 270 271 272 273 274 275 276 277 278
 [99] 279 280 281 282 283 284 285 286 287 288 289 290 291 292
[113] 293 294 295 296 297 298 299 300 394 395 396 397 398 399
[127] 400 401 402 403 404 405 406 407 408 409 410 411 412 413
[141] 414 415 416 417 418 419 420 421 422 423 424 425 426 427
[155] 428 429 430 431 432 433 434 435 436 437 438 439 440 441
[169] 442 443 444 445 446 447 448 449 450 451 452 453 545 546
[183] 547 548 549 550 551 552 553 554 555 556 557 558 559 560
[197] 561 562 563 564 565 566 567 568 569 570 571 572 573 574
[211] 575 576 577 578 579 580 581 582 583 584 585 586 587 588
[225] 589 590 591 592 593 594 595 596 597 598 599 600 601 602
[239] 603 604

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...