Цель: напечатать первый элемент списка, полученный из объекта POSIXlt.Extract operator '[' - POSIXlt unclassed list prints datetime
Код:
> x <- as.POSIXlt(Sys.time())
> x
[1] "2016-06-18 23:51:14 IST"
> x[1]
[1] "2016-06-18 23:51:14 IST"
> x[[1]]
[1] 14.70887
> temp <- list(999,23,3)
> temp[1]
[[1]]
[1] 999
> temp[[1]]
[1] 999
Когда доступ к объекту POSIXlt х с использованием одного экстракта, вся дата-время печатается, но когда мы так же получить доступ к другому списку (TEMP), то первый элемент печатается , как список (в качестве одного экземпляра скобки возвращает тот же объект). Первый элемент, хотя и извлекается, когда я использую экстракт двойной скобки. Новым для R, так может кто-нибудь пролить свет на это?
Проблема заключается в том, что 'x' - это один список элементов, а' ['обозначает подмножество списка. Итак, 'x [1]' по существу тот же объект, что и 'x', который можно проверить, если вы проверите' идентичный (x, x [1]) ', который возвращает' TRUE'. Поэтому вам нужно будет использовать 'x [[1]]' для извлечения первого элемента. Это также нарушает аналогию, которую вы делаете между 'x' и' temp', поскольку 'length (x) == 1' while' length (temp) == 3'. – Psidom
@Psidom, если вы говорите, что это список из одного элемента, то для доступа к первому элементу этого списка нам не нужно будет использовать 'x [[1]] [[1]]', поскольку сам первый элемент это список? И когда мы открываем x, мы возвращаем все элементы этого списка, а не единственный элемент (список) основного списка? –
ОК. Это действительно немного сложнее, чем я думал. Просто сделал более подробный ответ на этот вопрос. – Psidom