R:删除向量的最后一个元素
Posted
技术标签:
【中文标题】R:删除向量的最后一个元素【英文标题】:R: removing the last elements of a vector 【发布时间】:2011-04-14 19:10:12 【问题描述】:如何删除动物园系列的最后 100 个元素?
我知道名称[-element] 符号 但我无法减去一个完整的部分
【问题讨论】:
谢谢 我真正需要的是稍微复杂一点。我需要移动系列,删除一些元素并从另一侧添加其他元素,但是当我执行 c(rep(0,10),x[1:(length(x)-11)]) 时,它不再是动物园了。欢呼 @skan:接受一个答案以将问题标记为已解决怎么样? 【参考方案1】:我喜欢为此使用head
,因为它更容易输入。其他方法可能执行得更快……但我很懒,我的电脑不是。 ;-)
x <- head(x,-100)
> head(1:102,-100)
[1] 1 2
【讨论】:
这个答案应该被接受。它可以在事先不知道 x 长度的情况下使用,如果您尝试有选择地从文件中读取数据,这将是有利的。来自?head
:n: If negative, [return] all but the n last/first number of elements of x.
值得注意的是,还有tail()
,它的工作原理相同但相反。【参考方案2】:
其实还有一个更快的方法:
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
【讨论】:
@yaleidu 最好使用x[seq_len(length(x)-1)]
,它也适用于长度为1的情况。【参考方案3】:
我打赌length<-
是修剪矢量的最有效方法:
> x <- 1:10^5
> length(x)
[1] 100000
> length(x) <- 3
> x
[1] 1 2 3
【讨论】:
珍贵!几乎与head()
一样容易输入,但其他一切都简单得多!【参考方案4】:
只需使用数字索引,即
N <- nrow(X)
X <- X[1:(N-100-1),]
您需要确保N
大于 100 等
【讨论】:
【参考方案5】:如果你是一个班轮
x = x[1:(length(x) -101)]
【讨论】:
有了你所有的答案,我几乎已经构建了我需要的 coredata(zz2) 【参考方案6】:为了完整起见,再写一条:
x <- lag(x, 100)[-1:-100]
【讨论】:
以上是关于R:删除向量的最后一个元素的主要内容,如果未能解决你的问题,请参考以下文章