为什么list [1:length(list)-1]可以,但是list [1length(list)-2]错误?

时间:2018-09-20 15:38:08

标签: r

a是字符串的向量。如果我使用非-1的值尝试获取列表的值,则会收到错误消息。 使用:

 a[1:(length(a)-2)]

解决了这个问题。

a[1:length(a)]
[1] "ADE"    "DEZ"    "dfeefe"
a[1:length(a)-1]
[1] "ADE" "DEZ"
> a[1:length(a)-2]                                                                                                    Error in a[1:length(a) - 2] : 
only 0's may be mixed with negative subscripts

为什么错了?

1 个答案:

答案 0 :(得分:2)

您的问题是运算符优先级之一。 :的优先级高于-

a[1:length(a)-2]的意思是a[(1:length(a))-2],而不是您想要的a[1:(length(a)-2)]

在您的情况下,a的长度似乎为3,在这种情况下,1:length(a)是向量1 2 3,而1:length(a) - 2是向量-1 0 1。 / p>

而且,即使a[1:length(a)-1]起作用了,但您怎么想也没起作用。您计算的是a[0:2](只是忽略了第一个索引0),而不仅仅是a[1:2]