如何访问向量中的最后一个值?

时间:2020-03-05 18:57:16  来源:igfitidea点击:

假设我有一个向量嵌套在一个或者两个级别的数据框中。是否有一种快速而又肮脏的方法来访问最后一个值,而不使用length()函数?是PERL的$#特殊变量吗?

所以我想要这样的东西:

dat$vec1$vec2[$#]

代替

dat$vec1$vec2[length(dat$vec1$vec2)]

解决方案

回答

如果我们正在寻找与Python的x [-1]表示法一样好的东西,我认为我们很不走运。标准的成语是

x[length(x)]

但是编写一个函数来做到这一点很容易:

last <- function(x) { return( x[length(x)] ) }

R中缺少的这个功能也让我很烦!

回答

我使用tail()函数:

tail(vector, n=1)

与" x [length(x)]"惯用法不同,tail()的好处是它也可以在数据帧上工作。

回答

结合lindelof和Gregg Lind的想法:

last <- function(x) { tail(x, n = 1) }

在提示符下工作时,我通常会省略"n =",即tail(x,1)

pastecs包中的last不同,headtail(来自utils`)不仅适用于矢量,而且适用于数据帧等,并且还可以"不带前/后n个元素"返回数据,例如

but.last <- function(x) { head(x, n = -1) }

(请注意,我们必须为此使用" head",而不是" tail"。)