如何在R中相等且不同数量的元素上划分向量?

要用相等和不同数量的元素分割向量,我们可以将split函数与rep函数一起使用。rep函数将定义元素数量相等和不同的重复。例如,如果一个向量说x包含五十个值,然后使用不同数量的元素(例如20、10、10、5、5)对x进行分割,则可以使用命令split(x,rep(1:5,c( 20,10,10,5,5)))。

例1

> x1<-rnorm(20)
> x1
输出结果
 [1]  1.30316414 -0.80488291  0.23170812 -0.07318560 -0.73388857 -0.85952329
 [7] -0.88713465 -0.26618866  1.45634603  0.31282735  1.39285785  0.32501145[13] -1.72088389 -0.20699097 -0.37173907  0.03042574 -1.88779297 -1.49188883[19]  1.76346672 -0.78819850

示例

> split(x1,rep(1:5,c(4,4,4,4,4)))
输出结果
$`1`
[1]  1.3031641 -0.8048829  0.2317081 -0.0731856
 
$`2`
[1] -0.7338886 -0.8595233 -0.8871347 -0.2661887
 
$`3`
[1] 1.4563460 0.3128273 1.3928578 0.3250114
 
$`4`
[1] -1.72088389 -0.20699097 -0.37173907  0.03042574
 
$`5`
[1] -1.8877930 -1.4918888  1.7634667 -0.7881985

例2

> x2<-rnorm(80)
> x2
输出结果
 [1]  1.11014501 -0.30485929  1.19911840  1.01925016 -2.74900977 -0.65568943
 [7]  1.23454821 -0.91710842  2.25818571  0.11509990  0.60064320 -0.99898231
[13] -0.90873904  0.68738377  0.50206863  0.71867815 -0.17149018 -0.19056878
[19] -0.26320262  0.11085357 -0.87968483  1.10847267 -0.88684214  0.25501541
[25]  0.17070674  0.87421060 -0.51739525 -0.15134489 -0.84236650  0.50036499
[31] -1.07865023 -0.14798676  0.26203826  1.16376336 -0.98983205  2.49089629
[37]  0.29128935  1.27024917  0.49313043  0.90345654  0.36708891  1.16796991
[43] -0.82016835  0.30527505 -1.07100642  0.42140017  0.49116119 -1.70181435
[49]  0.85880415 -1.72676868  0.69970268  0.72310038 -0.55340423 -1.93115027
[55] -0.66841699  1.12353618  0.58422511  0.49507549 -0.48937123 -0.45051950
[61] -0.68090745  0.13435125 -0.51724884  1.24981341  0.13391069  0.12207344
[67]  0.20733945  0.74509319  0.31462239  1.07309023 -1.26986929  0.42222945
[73]  0.19691607 -0.15895825  0.39972349 -1.35150483  0.66675370 -0.05661676
[79]  0.64220780  0.20113633

示例

> split(x2,rep(1:8,c(10,10,10,10,10,10,10,10)))
输出结果
$`1`
 [1]  1.1101450 -0.3048593  1.1991184  1.0192502 -2.7490098 -0.6556894
 [7]  1.2345482 -0.9171084  2.2581857  0.1150999
 
$`2`
 [1]  0.6006432 -0.9989823 -0.9087390  0.6873838  0.5020686  0.7186782
 [7] -0.1714902 -0.1905688 -0.2632026  0.1108536
 
$`3`
 [1] -0.8796848  1.1084727 -0.8868421  0.2550154  0.1707067  0.8742106
 [7] -0.5173952 -0.1513449 -0.8423665  0.5003650
 
$`4`
 [1] -1.0786502 -0.1479868  0.2620383  1.1637634 -0.9898321  2.4908963
 [7]  0.2912894  1.2702492  0.4931304  0.9034565
 
$`5`
 [1]  0.3670889  1.1679699 -0.8201684  0.3052750 -1.0710064  0.4214002
 [7]  0.4911612 -1.7018144  0.8588042 -1.7267687
 
$`6`
 [1]  0.6997027  0.7231004 -0.5534042 -1.9311503 -0.6684170  1.1235362
 [7]  0.5842251  0.4950755 -0.4893712 -0.4505195
 
$`7`
 [1] -0.6809075  0.1343513 -0.5172488  1.2498134  0.1339107  0.1220734
 [7]  0.2073394  0.7450932  0.3146224  1.0730902
 
$`8`
 [1] -1.26986929  0.42222945  0.19691607 -0.15895825  0.39972349 -1.35150483
 [7]  0.66675370 -0.05661676  0.64220780  0.20113633

范例3

> x3<-rpois(100,5)
> x3
输出结果
[1]  3  7  3  1  6  2  7  6  7  7  3  4  4  7  2  3  4  9  5  8  6  3  5  4  4
[26]  5  9  7  2  4  5  6  7  5  4  6  5  5  7  5  2  2  6  3  6  5  2  5  3  6
[51]  4  5  6  0  9  4  4  3  4  5  2  7  4  9  4  7  7  2  6  5  8  4  4  2  9
[76]  3  7  8  5  3  4  5  6  7  4  7  7  6  4  6  1  7  7  4  6  5  5  5 11  1

示例

> split(x3,rep(1:5,c(10,25,25,20,20)))
输出结果
$`1`
 [1] 3 7 3 1 6 2 7 6 7 7
 
$`2`
 [1] 3 4 4 7 2 3 4 9 5 8 6 3 5 4 4 5 9 7 2 4 5 6 7 5 4
 
$`3`
 [1] 6 5 5 7 5 2 2 6 3 6 5 2 5 3 6 4 5 6 0 9 4 4 3 4 5
 
$`4`
 [1] 2 7 4 9 4 7 7 2 6 5 8 4 4 2 9 3 7 8 5 3
 
$`5`
 [1]  4  5  6  7  4  7  7  6  4  6  1  7  7  4  6  5  5  5 11  1