我有2个整数值向量。
> starts = 1:10
> ends = seq(1,100,10)
> ends
[1] 1 11 21 31 41 51 61 71 81 91
我想从头到尾生成数字序列,以便从1到1,2到11,3到21等10个序列。
我可以轻松地使用for()循环,我认为会有更优雅和更快的东西。 do.call()
似乎没有这样做,因为它抱怨:
> x = do.call(seq,list(from=starts,to=ends,by=1))
Error in seq.default(from = 1:10, to = c(1, 11, 21, 31, 41, 51, 61, 71, :
'from' must be of length 1
最好的方法是什么?
答案 0 :(得分:2)
您可以尝试Map
Map(`:`, starts, ends)
它将为list
中的“开始”,“结束”的相应元素生成序列。
或者代替:
,我们可以使用seq
(提及@MrFlick)
Map(seq, starts, ends)