Per il documentation of the class POSIXlt un oggetto di classe POSIXlt è un elenco con nome. E infatti:È un oggetto R di classe "POSIXlt" un "elenco" o no?
> tm <- strptime("24-12-2015 05:28:12", format="%d-%m-%Y %H:%M:%S", tz="UTC")
> class(tm)
[1] "POSIXlt" "POSIXt"
> tm$sec
[1] 12
> tm$min
[1] 28
> tm$hour
[1] 5
> tm$mday
[1] 24
> tm$mon
[1] 11
> tm$year
[1] 115
> tm$wday
[1] 4
> tm$yday
[1] 357
> tm$isdat
NULL
> tm$zone
NULL
> tm$gmtoff
NULL
Il documentation of the class list dice che is.list(tm)
è vero se e solo se tm
è una lista o un pairlist, e is.pairlist(tm)
è vero se e solo se è una tm
pairlist o NULL.
> is.list(tm)
[1] TRUE
> is.pairlist(tm)
[1] FALSE
Quindi tm
deve essere un elenco.
Ma "lista" non è una superclasse di "POSIXlt":
> is(tm)
[1] "POSIXlt" "POSIXt" "oldClass"
> extends("POSIXlt")
[1] "POSIXlt" "POSIXt" "oldClass"
extends
nega la domanda se extent "POSIXlt" "lista", la risposta non è ancora "forse":
> extends("POSIXlt","list")
[1] FALSE
Inoltre,
> is("POSIXlt","list")
[1] FALSE
> is(tm,"list")
[1] FALSE
A documentation of is
ciò significa che tm
non possono essere trattati come da "elenco". In particolare, tm
non è un elenco. Ma se tm
non può essere trattato come da "elenco", perché riesce a forzare tm
in un elenco? as(tm.list
è senza dubbio una lista, mentre as.list(tm)
e tm
sono identiche:
> as(tm,"list")
[[1]]
[1] 12
[[2]]
[1] 28
[[3]]
[1] 5
[[4]]
[1] 24
[[5]]
[1] 11
[[6]]
[1] 115
[[7]]
[1] 4
[[8]]
[1] 357
[[9]]
[1] 0
> class(as(tm,"list"))
[1] "list"
> is.list(as(tm,"list"))
[1] TRUE
> is(as(tm,"list"),"list")
[1] TRUE
> identical(tm,as.list(tm))
[1] TRUE
as(tm,"list")
ha i componenti indicati nella documentazione del POSIXlt classe, ma i nomi sono andati.
Cosa significa essere una lista? È tm
un elenco o no?
vorrei capire R. Quindi la mia domanda. – mra68
questa potrebbe essere una domanda migliore per 'r-devel @ r-project.org' ... –
Dipende da [qual è il significato della parola" è "] (https://www.youtube.com/watch ? v = j4XT-l-_3y0). – joran