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 长度的情况下使用,如果您尝试有选择地从文件中读取数据,这将是有利的。来自?headn: 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&lt;- 是修剪矢量的最有效方法:

> 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:删除向量的最后一个元素的主要内容,如果未能解决你的问题,请参考以下文章

r从向量中获取最后和第一个非NA元素

我如何删除向量中的重复值,除了最后一个

从 R 中的字符向量中删除引号

在R中的字符串末尾插入字符,最后一个元素除外

如何在R中循环中的最后一个元素之后附加到列表?

R语言的自定义函数—字符组合