使用参考文件更改所有 R 列名称

Change all R columns names using a reference file

我正在尝试重命名 R 中数据框中的列。但是,重命名具有循环引用。我想解决这个问题,循环引用是不可避免的。一种思考方式是重命名列并将其移动到新的 dataframe,从而避免循环引用。但是,我做不到。

重命名参考如下:

我目前使用的功能如下:

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是指图片

您可以同时重命名多个列,并且无需移动存储在 data.frame 中的数据本身。如果你知道正确的顺序,你可以使用

names(data) <- mapping.col$new_name

如果顺序不一样,可以用match先匹配到合适的位置:

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

顺便说一下,分配名称和其他属性总是通过某种分配来完成的。 setNames returns 东西,仍然需要分配。