Ответ 1
Не уверен, что это ошибка - я подозреваю, что это зависит от вашей точки зрения, но это тонкость работы индексации. Быстрое решение - изменить свой третий пример на:
seq(from=10,to=30)[as.numeric(c(NA,NA))]
Причина в том, что c(NA,NA)
является логическим вектором, поэтому используется логическое подмножество (которое включает в себя рециркуляцию вектора), тогда как наличие хотя бы одного не-NA заставляет вектор продвигаться к целочисленному вектору. Аналогично, это может быть реализовано как:
seq(from=10,to=30)[c(NA_integer_,NA_integer_)]
См. ?'['
для специфики индексирования, если вы не знакомы с ними.