Я думаю, что этот вопрос связан с концепцией Mutable Vs Immutable objects in R, и это может быть «вопрос начинающего». Я столкнулся с этой проблемой с funcion names()
и функцией setnames()
пакета data.table
. Я уверен, что это ожидаемое поведение, но для меня это было довольно неожиданно, и я уверен, что это связано не только с names()
.Функции, возвращающие переменные Mutable или Immutable в R
Представьте меня data.table под названием dt
с двумя столбцами а и Ь:
dt <- data.table(a = 1:5, b= 1:5)
oldNames <- names(dt)
Если вы печатаете oldNames
, очевидно, показывает:
oldNames
[1] "a" "b"
Но если вы Ставить имена dt
с setnames()
:
setnames(dt,oldNames,c("aNew","bNew"))
Изменено содержимое переменной oldNames
.
oldNames
[1] "aNew" "bNew"
Я знаю, что в Python это ожидаемое поведение некоторых типов данных (изменяемые из них), а не в других (в inmutable из них). В R, есть ли такая дикотомия?
Для меня «ожидаемым» поведением было бы то, что переменная oldNames
хранит имена столбцов и не зависит от будущих изменений в таблице данных. Например, с помощью функции length()
этого не происходит:
L <- length(dt)
L
[1] 2
dt[,c:=1:5]
L
[1] 2
Любая ссылка на какой-то хорошей информации о поведении или объяснения были бы оценены и что будет способ кодирования так oldNames
не меняет его после модификации dt.
Вы правы, она дублируется, я думал, что это была проблема R/поведение вообще не из Data.Table. спасибо. –