如何访问向量中的最后一个值?
时间: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
不同,head
和tail
(来自utils`)不仅适用于矢量,而且适用于数据帧等,并且还可以"不带前/后n个元素"返回数据,例如
but.last <- function(x) { head(x, n = -1) }
(请注意,我们必须为此使用" head",而不是" tail"。)