указателем?
> dt<-data.table(a=rnorm(100),b=rnorm(100))
> nt<-names(dt)
> dt[,c:=1]
> nt
[1] "a" "b" "c"
Я меняю в data.table колонки и у меня меняется вектор с именами колонок. Что сами по себе дататейблы являются не копиями, а указателями и их поведение не всегда предсказуемо в этом смысле, я знал. А вот что с виду обычный текстовый вектор становится указателем - для меня новость. Есть ли возможность вообще увидеть, что вот этот "nt" - указатель и понять, на что он указывает?
В R есть штука, называется string pool. Длинные строки уезжают в этот пул, а в объекте остается указатель. Популярно писал об этом здесь: https://habr.com/ru/post/466829/
Но тут дело в другом
с телефона консоль запускать неудобно, возможно, что-то другое. но string pool все равно есть в системе. а имена являются атрибутами объекта, который есть вектор текстовых строк. Публикация Brodie является отличным глубинным исследованием, которое позволит пролить свет именно на эту ситуацию. И да, .Internal(inspect(dt))
Есть ощущение, что это баг... Может, имеет смысл создать issue в data.table
уже есть: https://github.com/Rdatatable/data.table/issues/5079
Точно, и в своем переводе нашел
Обсуждают сегодня