如何获得R中向量的倒数第二个元素

时间:2019-07-20 12:39:03

标签: r

我正在尝试将Vector的倒数第二个元素转换为另一个vector。有关示例,请参见此数据集

向量A

7.31 15.54  9.79  4.24  9.01  6.26 12.05  5.16 11.13  7.69  6.42 13.65 11.17 11.04  6.80  7.15 11.52 10.14 10.07 8.30

我要创建一个

向量B

  15.54  9.79  4.24  9.01  6.26 12.05  5.16 11.13  7.69  6.42 13.65 11.17 11.04  6.80  7.15 11.52 10.14 10.07 8.30

但是我不想使用

B<-A[2:20]

因为最后一个元素号的更改(增加)时间

A[1:tail(A,n=1)]
[1]  7.31 15.54  9.79  4.24  9.01  6.26 12.05  5.16

这提供了一半的数据。仅8个元素。 也尝试过

 B<-A[1:last(A)]
 print(B)
[1]  7.31 15.54  9.79  4.24  9.01  6.26 12.05  5.16

它仅给出前几个元素。为什么?

我期望的答案是

15.54  9.79  4.24  9.01  6.26 12.05  5.16 11.13  7.69  6.42 13.65 11.17 11.04  6.80  7.15 11.52 10.14 10.07 8.30

3 个答案:

答案 0 :(得分:2)

似乎您想从向量A中保留一个元素。您可以简单地写B=tail(A,-1) -1离开第一个元素

答案 1 :(得分:1)

考虑包含十个元素的向量v

v <- c(7.31, 15.54, 9.79, 4.24, 9.01, 6.26, 12.05, 5.16, 11.13, 7.69)

要使第2个 nd 到最后一个元素(即第10个 th ),您需要编写硬编码的

v[2:10]
# [1] 15.54  9.79  4.24  9.01  6.26 12.05  5.16 11.13  7.69

这意味着您可以在[括号内定义元素的 number

另一方面,

v[2:tail(v, 1)]
# [1] 15.54  9.79  4.24  9.01  6.26 12.05

为您提供不同的结果,因为tail()为您提供元素的,在我们的示例中为

tail(v, 1)
# [1] 7.69

实际上你是在说,

v[2:7.69]
# [1] 15.54  9.79  4.24  9.01  6.26 12.05 

之所以为v[2:8],是因为7.69将被强制as.integer(7.69)产生8

您要动态获取最后一个元素的编号,这是length()的任务,因此您要做的是:

v[2:length(v)]
# [1] 15.54  9.79  4.24  9.01  6.26 12.05  5.16 11.13  7.69

答案 2 :(得分:0)

标题很模糊,我以为它会是倒数第二个元素的倒数第二个元素!

我很想知道为什么没有人用看似显而易见的答案来回答:

B <- A[-1]

也许负索引在任何情况下都使用tail()?希望我没有完全误解这个问题!!