Not sure if it is a bug - I suspect that depends on your point of view, but it is a subtlety of how indexing works. The quick solution is to change your third example to:
seq(from=10,to=30)[as.numeric(c(NA,NA))]
The reason is that c(NA,NA)
is a logical vector, so the logical subsetting (which involves recycling the vector) is used, whereas having at least one non-NA causes the vector to be promoted to an integer vector. Likewise this could be implemented as:
seq(from=10,to=30)[c(NA_integer_,NA_integer_)]
See ?'['
for specifics of indexing if you're not familiar with them.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…