Измените все имена столбцов R, используя справочный файл - PullRequest
0 голосов
/ 11 декабря 2018

Я пытаюсь переименовать столбцы в кадре данных в R.Однако переименование имеет циклическую ссылку.Я хотел бы решить эту проблему, круговой ссылки нельзя избежать.Одним из способов было переименовать столбец и переместить его на новый dataframe, следовательно, избегая циклических ссылок.Однако я не могу этого сделать.

Ссылка на переименование выглядит следующим образом:

enter image description here

Текущая функция, которую я использую:следующим образом:

standard_mapping <- function(mapping.col, current_name, standard_name, data){
  for(i in 1:nrow(mapping.col)) {
    # i =32
    print(i)
    eval(parse(text = paste0("std.name = mapping.col[",i,",'",new_name,"']")))
    eval(parse(text = paste0("data.name = mapping.col[",i,",'",old_name,"']")))

    if(data.name %in% colnames(data)){
      setnames(data, old=c(data.name), new = c(std.name))
    }
  }
  return(data)
}

Mapping.col ссылается на изображение

1 Ответ

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

Вы можете переименовать несколько столбцов одновременно, и нет необходимости перемещать сами данные, хранящиеся в вашем data.frame.Если вы знаете правильный порядок, вы можете просто использовать

names(data) <- mapping.col$new_name

Если порядок отличается, вы можете использовать match, чтобы сначала сопоставить их с правильными позициями:

names(data) <- mapping.col$new_name[match(names(data), mapping.col$old_name)]

Кстати, присвоение имен и других атрибутов всегда выполняется каким-то видом присваивания.setNames возвращает что-то, что все еще требует назначения.

...