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

我首先想到的是v[length(v):1],但当vnumeric(0)时,它返回NA,而用户通常希望排序不返回任何内容,而不排序不返回不可用的内容——在我的情况下,这确实会产生很大的不同.

推荐答案

你就快到了;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.当x为0时,as.logical(x)FALSE,而对于任何其他数字,as.logical(x)TRUE.

因此,if (length(x))次测试正好是你想要的——x的长度是否为零.如果不是,length(x):1L有一个理想的效果,否则就没有必要逆转任何东西,正如@floder在 comments 中解释的那样.

R相关问答推荐

在集合群体模型中计算时间步依赖的速率/参数

R中的Fasttext langue_identification返回太多参数-如何与文本匹配?

使用gggplot 2在R中重新调整面板和y轴文本大小

使用spatVector裁剪网格数据时出现的问题

在R中查找每个组不同时间段的总天数

R Markdown中的交叉引用表

terra nearest()仅为所有`to_id`列返回NA

如何根据组大小应用条件过滤?

为什么横向页面会导致officeverse中的页码/节头/页脚出现问题?

解析R函数中的变量时出现的问题

如何在R中通过多个变量创建交叉表?

以NA为通配符的R中的FULL_JOIN以匹配其他数据中的任何值.Frame

R -在先前group_by级别汇总时获取最大大小子组的计数

我如何使用循环来编写冗余的Rmarkdown脚本?

将列表中的字符串粘贴到R中for循环内的dplyr筛选器中

创建在文本字符串中发现两个不同关键字的实例的数据框

无法将条件case_when()应用于使用!!创建的新变量Mutations

R基于变量组合创建新的指标列

防止正则表达式覆盖以前的语句

构建一个6/49彩票模拟系统