在R中,
print((1:20)[-(15:18)])
打印从1到20的整数列表,如预期的那样。
但是
print((1983:2010)[-(1992:1994)])
打印从1983年到2010年的整数列表,包括1992年到1994年。否定子集不起作用。
这里发生了什么?我知道R可能会遇到极大数字的问题,但我不认为这些数字非常大。
答案 0 :(得分:0)
这是基于数字索引。在第二个例子中,我们没有长度为>的向量。 1994年,但在前一种情况下,有
length(1983:2010)
#[1] 28
使用%in%
v1 <- 1983:2010
v1[!v1 %in% 1992:1994]
或者根据vector
v1[-((length(v1)-2):length(v1))]
答案 1 :(得分:0)
方括号中的值是指向量中数字的位置,而不是数字本身。
在你的第一个例子中,数字15-18也占据15-18的位置。
在你的第二个例子中,1992-1994号码不占据1992-1994的位置。他们占据10-12的位置。所以你可以使用:
print((1983:2010)[-(10:12)])