我该如何删除动物园系列的最后100个元素?
我知道使用name[-element]符号可以实现, 但我无法通过它来减去整个部分。
我喜欢使用head
,因为它更容易打字。其他方法可能执行得更快...但是我懒得动手,而且我的电脑也不需要那么快。;-)
x <- head(x,-100)
> head(1:102,-100)
[1] 1 2
?head
的说明:当 n 为负数时,返回 x 中除了最后/最前面的 n 个元素之外的所有元素。 - C8H10N4O2tail()
函数,它的功能与之相同,但是是反向的。 - Mark Rucker实际上,有一种更快的方法:
y <- x[1:(length(x)-1)]
代码展示:
> microbenchmark( y <- head(x, -1), y <- x[-length(x)],y <- x[1:(length(x)-1)], times=10000)
Unit: microseconds
expr min lq mean median uq max
y <- head(x, -1) 71.399 76.4090 85.97572 78.9230 84.2775 2795.076
y <- x[-length(x)] 53.623 55.5585 65.15008 56.5680 61.1585 2523.141
y <- x[1:(length(x) - 1)] 25.722 28.2925 36.43029 29.1855 30.4010 2410.975
x [seq_len(length(x)-1)]
,这也适用于长度为1的情况。 - Ken Williams我打赌 length<-
是剪辑向量最有效的方法:
> x <- 1:10^5
> length(x)
[1] 100000
> length(x) <- 3
> x
[1] 1 2 3
head()
一样容易输入,但在其他方面更为简单! - Cris N <- nrow(X)
X <- X[1:(N-100-1),]
在这里,您需要确保N
大于100等。
如果你是一行命令
x = x[1:(length(x) -101)]
为了完整起见,这里是另一个一行代码:
x <- lag(x, 100)[-1:-100]