我正在尝试将一个向量的倒数第二个元素放到另一个向量中。有关示例,请参见此数据集
向量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
4条答案
按热度按时间cwtwac6a1#
考虑包含10个元素的向量
v
。要获取第2个到最后一个(即第10个)元素,您需要编写硬编码,
这意味着在
[
括号内定义元素的 * number *。另一方面,
给出了不同的结果,因为
tail()
给出了元素的 * value *,在我们的示例中为:所以实际上你是说,
其为
v[2:8]
,因为7.69
将被强制为as.integer(7.69)
,这产生8
。您希望动态获取最后一个元素的编号,这是
length()
的一个任务,因此您要做的是:y3bcpkx12#
标题是相当模糊的,我以为它会是倒数第二个元素的意义上的第二个从结束!
我很好奇为什么没有人回答这个看似显而易见的问题:
也许负索引在任何情况下都使用tail()?希望我没有完全误解这个问题!!
kqqjbcuj3#
看起来你想从向量
A
中留下一个元素,你可以简单地写B=tail(A,-1)
,其中-1
留下第一个元素。unhi4e5o4#
关于短名单或载体:
tail(A,-1)
和A[2:length(A)]
对于长度≥2的列表/向量的作用相同,但是0-长度和1-长度列表/向量产生不同的结果,有利于tail(A,-1)
。如果您尝试从第二个元素开始迭代所有元素,这一点尤其重要: