对R中两个向量之间的所有整数进行排序

时间:2015-03-19 10:05:01

标签: r vectorization

我有两个向量:

Start = c(1,10,20)
Finish = c(9,19,30)

我想要这样的东西......

开始:完成

但当然不会

我想生成如下列表:

[1] 1,2,3,4,5,6,7,8,9
[2] 10 11 12 13 14 15 16 17 18 19
[3] 20 21 22 23 24 25 26 27 28 29 30

优选地以某种矢量化方式。 Start矢量将始终大于相应元素的Finish矢量。

2 个答案:

答案 0 :(得分:16)

只需使用mapply

Start = c(1,10,20)
Finish = c(9,19,30)
mapply(":", Start, Finish)
## [[1]]
## [1] 1 2 3 4 5 6 7 8 9
## 
## [[2]]
##  [1] 10 11 12 13 14 15 16 17 18 19
## 
## [[3]]
##  [1] 20 21 22 23 24 25 26 27 28 29 30
## 

当然,您也可以使用Vectorize,但这只是mapply的包装器。但是,Vectorize不能与原始函数一起使用,因此您必须指定seq.default而不是seqseq.int

示例:

Vectorize(seq.default)(Start, Finish)
## [[1]]
## [1] 1 2 3 4 5 6 7 8 9
## 
## [[2]]
##  [1] 10 11 12 13 14 15 16 17 18 19
## 
## [[3]]
##  [1] 20 21 22 23 24 25 26 27 28 29 30
## 

答案 1 :(得分:4)

同意@ColonelBeauvel和@nicola,但您可以使用seq代替:,因此

Start = c(1, 10, 20)
Finish = c(9, 19, 30)
Map(seq, Start, Finish)