R: Почему объект xts становится объектом зоопарка после вызова transform ()? - PullRequest
2 голосов
/ 17 февраля 2012

transform () удаляет квалификатор класса "xts" из моего объекта xts:

> class(myxts)
[1] "xts" "zoo"
> myxts = transform(myxts, ABC = 1)
> class(myxts)
[1] "zoo"

Почему это так?

1 Ответ

1 голос
/ 17 февраля 2012

Для transform нет метода xts, поэтому отправляется метод zoo. Метод zoo явно создает новый объект 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>

Вы можете просто обернуть свои transform вызовы в as.xts, или ваш пример может быть записан как myxts$ABC <- 1.

...