如何逆序向量?

时间:2013-09-21 13:58:38

标签: r sorting vector reverse

假设我有一个向量v,我如何得到它的反向,即最后一个元素?

我遇到的第一件事是v[length(v):1],但是当vnumeric(0)时它返回NA,而用户通常期望排序什么也不返回任何内容,没有排序什么都不返回不可用的东西 - 它确实对我的情况有很大影响。

1 个答案:

答案 0 :(得分:70)

你快到了; rev可以满足您的需求:

rev(1:3)
# [1] 3 2 1
rev(numeric(0))
# numeric(0)

原因如下:

rev.default
# function (x) 
# if (length(x)) x[length(x):1L] else x
# <bytecode: 0x0b5c6184>
# <environment: namespace:base>

如果是numeric(0),则length(x)会返回0.由于if需要逻辑条件,因此会length(x)强制转换为TRUEFALSE }。如果as.logical(x)为0,则FALSEx,而对于任何其他数字,TRUE会发生if (length(x))

因此,x精确测试你想要的东西 - length(x):1L长度为零。如果不是,则{{1}}具有理想的效果,否则不需要反转任何内容,正如@floder在评论中所解释的那样。