Функции R, использующие столбец data.frame $, не работают - PullRequest
0 голосов
/ 25 февраля 2020

Две следующие функции не работают в данный момент, но работают, когда я пишу их полностью - не знаю почему. Любые предложения по исправлениям было бы здорово.

change_specific_column_name <- function(data.frame,old_column_name,new_column_name){
  names(data.frame)[names(data.frame) == old_column_name] <- new_column_name
}

change_specific_observations_name <- function(data.frame, column_name, old_obseration, new_observation){
   data.frame$column_name[which(data.frame$column_name == old_obseration)] <- new_observation
}

test_frame <- data.frame(Does=1,This=2,Work=3)

change_specific_column_name(test_frame,"Work","Happen") # this doesn't change the name of the column

names(test_frame)[names(test_frame) == "Work"] <- "Happen" # writing out the function does change the name

1 Ответ

0 голосов
/ 25 февраля 2020

Хотя это и не точно, вы можете считать аргумент функции переданным по значению, поэтому очевидно, что изменения, внесенные в формальный параметр функции, не влияют на фактический аргумент.

Любой предложения по исправлениям были бы хорошими.

Если вы действительно хотите, чтобы функция изменила свой аргумент, вы можете использовать методику, описанную, например, в Вызов по ссылке в R ; по сути, просто заверните свое назначение в eval.parent(substitute(…)).

change_specific_column_name <- function(data.frame, old_column_name, new_column_name)
 eval.parent(substitute(names(data.frame)[names(data.frame) == old_column_name] <- new_column_name))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...