Любопытно: может ли кто-нибудь объяснить, почему df1 и df3 наконец-то присваивается один и тот же атрибут, хотя df3 явно модифицирован?Я бы предположил, что, поскольку df1 и df3 имеют разные адреса памяти, они не будут оба модифицированы.Проблема трубопровода - Как объекты связаны друг с другом?
library(lobstr)
library(dplyr)
library(data.table)
df1 <- data.frame(x = 1:3, y = letters[1:3])
df2<-data.frame(df1)
df3<-df2%>% dplyr::mutate_at(vars(ends_with("x")),
funs(data.table::setattr(.,"label","An x column")))
str(df1)
str(df3)
obj_addr(df1)
obj_addr(df3)
Результаты
str(df1)
'data.frame': 3 obs. of 2 variables:
$ x: int 1 2 3
..- attr(*, "label")= chr "An x column"
$ y: Factor w/ 3 levels "a","b","c": 1 2 3
str(df3)
'data.frame': 3 obs. of 2 variables:
$ x: int 1 2 3
..- attr(*, "label")= chr "An x column"
$ y: Factor w/ 3 levels "a","b","c": 1 2 3
obj_addr(df1)
[1] "0xafe6a98"
obj_addr(df3)
[1] "0x98deef0"