R: Perché un oggetto xts diventa un oggetto zoo dopo aver chiamato transform ()?
Domanda
transform () rimuove il qualificatore di classe "xts" dal mio oggetto xts:
> class(myxts)
[1] "xts" "zoo"
> myxts = transform(myxts, ABC = 1)
> class(myxts)
[1] "zoo"
Perché è così?
Soluzione
Non esiste un metodo xts per transform
, quindi viene inviato il metodo zoo.Il metodo zoo crea esplicitamente un nuovo oggetto zoo.
> zoo:::transform.zoo
function (`_data`, ...)
{
if (is.null(dim(coredata(`_data`))))
warning("transform() is only useful for matrix-based zoo series")
zoo(transform.data.frame(data.frame(coredata(`_data`)), ...),
index(`_data`), attr(`_data`, "frequency"))
}
<environment: namespace:zoo>
Puoi semplicemente racchiudere le tue chiamate transform
in as.xts
oppure il tuo esempio potrebbe essere scritto come myxts$ABC <- 1
.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow