假设我有一组不同长度的向量。
我想始终获取其中的前 9 个元素。
但是,如果向量长度为 <9, I want to grab all the elements, and complete up to 9 going over the vector again (and again, and again... where necessary) from the start.
例如:
v1=LETTERS[1:15]
-> 我想抢"A" "B" "C" "D" "E" "F" "G" "H" "I"
v2=LETTERS[1:5]
-> 我想抢"A" "B" "C" "D" "E" "A" "B" "C" "D"
v3=LETTERS[1:3]
-> 我想抢"A" "B" "C" "A" "B" "C" "A" "B" "C"
...等等。
有没有一种简单的方法可以做到这一点而无需遍历循环和异常?
您可以使用
rep_len()
功能:
> rep_len(LETTERS[1:15], 9)
[1] "A" "B" "C" "D" "E" "F" "G" "H" "I"
> rep_len(LETTERS[1:5], 9)
[1] "A" "B" "C" "D" "E" "A" "B" "C" "D"
> rep_len(LETTERS[1:3], 9)
[1] "A" "B" "C" "A" "B" "C" "A" "B" "C"
或者,还有
rep()
函数,带有 length.out
参数,它会给你相同的结果,但是 rep()
比 rep_len()
稍微慢一些。
您可以阅读文档这里。