Перестановка столбцов в таблице данных, влияющая на другие переменные в R

У меня есть следующие строки кода, который пытается перетасовать столбцы таблицы данных и переименовать их.

rm(list = ls(all.names = TRUE))
cat('\14')
library(data.table)
library(stringr)
DF<-matrix(nrow = 10,ncol=5)
DF<-data.frame(DF)
colnames(DF)<-c(1,2,3,4,5)

DF.Old <- DF
DFID <- DF$`1`
DF$`1` <- NULL

Int.Vals <- colnames(DF)
print(Int.Vals)

Jumble.Int.Vals <- sample(colnames(DF))
DF <- setcolorder(DF,Jumble.Int.Vals)
print(Int.Vals)

При выполнении всего этого вместе из файла сценария (CTRL+SHIFT+S) переменная Int.Vals, которая была {2,3,4,5} и не затронута последними тремя строками, перетасовывается как {5,4,3,2}. Это происходит только тогда, когда я выполняю строки вместе, и этого не происходит, если я выполняю скрипт построчно, где Int.Vals не изменяется.

Я нахожу это логически непоследовательным. Кто-нибудь может указать, почему это происходит?


person Soumyadipta Sarkar    schedule 24.05.2018    source источник
comment
Похоже, что функция colnames (а также функция names) возвращает ссылку на имена фреймов данных, а не на вектор символов, что является ожидаемым поведением... если вы действительно хотите этого избежать, попробуйте Int.Vals <- copy(colnames(DF)) я не могу найти в документация или источник, но полное объяснение   -  person J. Win.    schedule 24.05.2018
comment
Для получения дополнительной информации о точке J Win: stackoverflow.com/questions/15913417/   -  person Frank    schedule 24.05.2018