假设我有一个向量,它嵌套在一个有一级或二级的数据框架中。是否有一种快速而肮脏的方法来访问最后一个值,而不使用length()函数?一些ala PERL的$#特殊的var?
所以我想要这样的东西:
dat$vec1$vec2[$#]
而不是:
dat$vec1$vec2[length(dat$vec1$vec2)]
假设我有一个向量,它嵌套在一个有一级或二级的数据框架中。是否有一种快速而肮脏的方法来访问最后一个值,而不使用length()函数?一些ala PERL的$#特殊的var?
所以我想要这样的东西:
dat$vec1$vec2[$#]
而不是:
dat$vec1$vec2[length(dat$vec1$vec2)]
当前回答
包数据。表包含最后一个函数
library(data.table)
last(c(1:10))
# [1] 10
其他回答
dplyr包包含一个函数last():
last(mtcars$mpg)
# [1] 21.4
包数据。表包含最后一个函数
library(data.table)
last(c(1:10))
# [1] 10
xts包提供了最后一个函数:
library(xts)
a <- 1:100
last(a)
[1] 100
另一种方法是取反转向量的第一个元素:
rev(dat$vect1$vec2)[1]
结合林德洛夫和格雷格·林德的想法:
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) }
(注意,你必须使用头部,而不是尾部。)