Каждая переменная в 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
много - это, как правило, плохая практика писать код, который ему нужен (на мой взгляд).
Предполагая, что вход 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)