1:10, "B" = 2:11)
df1 <- df
digest(df) == digest(df1) # TRUE
df1[1, 1] <- 2
df2 <- df1
df2[1, 1] <- 1
all(df == df2) # TRUE
identical(df, df2) # FALSE
digest(df) == digest(df2) # FALSE
Т.е. все то же самое 😳
Получается, что вместе с переменной хранится история ее изменений?.. 🤔
Мб если вывести на экран то, что в каждом df, то можно будет увидеть, что происходит. Как один из вариантов - причина в особенностях работы с памятью
str показывает, что тип меняет с int на num, то есть double. Попробуйте такой вариант. identical перестает их различать, однако digest почему-то все равно делает разные хэши: df <- data.frame("A" = 1:10, "B" = 2:11) df1 <- df digest(df) == digest(df1) # TRUE df1[1, 1] <- 2L # целое число df2 <- df1 df2[1, 1] <- 1L # целое число all(df == df2) # TRUE identical(df, df2) # TRUE digest(df) == digest(df2) # FALSE str(df) str(df2)
Обсуждают сегодня