Лучший способ применить функцию прокрутки к объекту zoo или xts?

Каждая переменная в python (например, как dict1 или str или __builtins__ является указателем на некоторый скрытый платонический «объект» внутри машины.

Если вы установите dict1 = dict2, вы просто укажите dict1 на тот же объект (или местоположение памяти или любую другую аналогию, которая вам нравится), как dict2. Теперь объект, на который ссылается dict1, является тем же объектом, на который ссылается dict2.

Вы можете проверить: dict1 is dict2 должен быть True. Кроме того, id(dict1) должен быть таким же, как id(dict2).

Вы хотите dict1 = copy(dict2) или dict1 = deepcopy(dict2).

Разница между copy и deepcopy? deepcopy гарантирует, что элементы dict2 (вы указали его в списке?) также являются копиями.

't использовать deepcopy много - это, как правило, плохая практика писать код, который ему нужен (на мой взгляд).

0
задан Ernie 16 January 2019 в 19:13
поделиться

1 ответ

Предполагая, что вход z показан воспроизводимо в конце заметки, если ширина равна 2, то:

library(zoo)

-diff(z)
##            V2 V3 V4
## 1970-04-12 -4 -4  6
## 1970-04-13 -1 -1 -2
## 1970-04-14  1  0 -1

и в целом:

w <- 2 # modify as needed
-diff(z, w-1)
##            V2 V3 V4
## 1970-04-12 -4 -4  6
## 1970-04-13 -1 -1 -2
## 1970-04-14  1  0 -1

или с использованием rollapplyr :

w <- 2 # modify as needed
rollapplyr(z, w, function(x) x[1] - x[w])
##            V2 V3 V4
## 1970-04-12 -4 -4  6
## 1970-04-13 -1 -1 -2
## 1970-04-14  1  0 -1

Примечание

Lines <- "
1970-04-11 1 3 8
1970-04-12 5 7 2
1970-04-13 6 8 4
1970-04-14 5 8 5"

library(zoo)
z <- read.zoo(text = Lines)
0
ответ дан G. Grothendieck 16 January 2019 в 19:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: