如何在不使用rev()及循环的前提下反转向量且兼容numeric(0)
兼容空向量的无循环向量反转实现(不使用rev())
原代码 v[length(v):1] 没法正确处理长度为0的向量(比如 numeric(0))——当向量长度为0时,0:1 生成的索引会导致返回包含 NA 的结果,而非预期的空向量。
解决这个问题可以用 seq.int() 来生成反向索引,代码如下:
v[seq.int(length(v), 1, -1)]
为什么这个方法可行?
- 当向量长度大于0时,
seq.int(length(v), 1, -1)会生成从向量末尾到开头的整数序列,和原代码的反转逻辑一致。 - 当向量是空向量时,
seq.int(0, 1, -1)会返回integer(0),此时用这个索引取向量元素,会直接返回和原向量类型一致的空向量,完全符合需求。
内容的提问来源于stack exchange,提问作者Chuck Davidson
相关产品推荐
相关产品推荐

