Невозможно назначить имя столбца путем индексации в аргументе функции - PullRequest
0 голосов
/ 16 декабря 2018

Я изучаю R и пытаюсь понять свойства индексации.Кажется, я не понимаю, почему следующий код для изменения имени столбца не работает:

state.all <- as.data.frame(state.x77)
head(state.all)
state.all$States <- rownames(state.all)
rownames(state.all) <- NULL
# why the following row does not work?
names(state.all["States"]) <- "Test"
colnames(state.all)

Пока это работает:

state.all <- as.data.frame(state.x77)
head(state.all)
state.all$States <- rownames(state.all)
rownames(state.all) <- NULL
# This work
names(state.all)[which(colnames(state.all)=="States")] <- "Test"
colnames(state.all)

Разве функция не должна перезаписывать функциюимя колонки тоже в первом примере?Это как-то связано с локальной и глобальной средой?

Заранее спасибо!

1 Ответ

0 голосов
/ 16 декабря 2018

То, что вы пытаетесь сделать, это заменить имя столбца № 9. выражение which(colnames(state.all)=="States") приводит к индексу, если столбец с именем «Состояния» (если есть), а затем принимает этот индекс и заменяет значениев векторе имен.выражение state.all["States"] просто возвращает значения этого столбца, поэтому, конечно, ничего не произойдет.

Я предлагаю что-то вроде colnames(state.all)[which(colnames(state.all)=="States")] <- "Test".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...