Цитата из документации (выделено мной):
Самое важное различие между [
, [[
и $
состоит в том, что [
может выбрать более одного элемента, тогда как другие два выбирают один элемент .
Другими словами test[[1 : 3]]
не делает того, о чем вы, по-видимому, думаете.Вместо этого он пытается выполнить рекурсивное подмножество, что эквивалентно записи test[[1L]][[2L]][[3L]]
.
Как предлагается в комментариях, вам нужно выполнить что-то вроде lapply(test, `[[`, 1L)
для подмножествакаждый вектор в вашем списке.Чтобы получить результат в виде вектора, а не списка, оберните вызов в unlist
или используйте vapply
:
vapply(test, `[[`, numeric(1L), 1L)
Вы также можете использовать sapply
вместо последнего, но помните, что этофункция возвращает свое возвращаемое значение не так, как это не всегда очевидно, и поэтому подвержено ошибкам.Лучше ограничить его использование интерактивными сессиями.