NA in subsetter - Inconsistent behavior

前端 未结 1 1099
没有蜡笔的小新
没有蜡笔的小新 2020-12-22 03:44

Consider the following:

seq(from=10,to=30)[c(4,8)]
[1] 13 17

seq(from=10,to=30)[c(NA,8)]
[1] NA 17

seq(from=10,to=30)[c(NA,NA)]
[1] NA NA NA NA NA NA NA NA         


        
相关标签:
1条回答
  • 2020-12-22 04:07

    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.

    0 讨论(0)
提交回复
热议问题