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

时间:2018-12-10 22:59:28

标签: r dataframe rename cbind

我正在尝试重命名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 :(得分:0)

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

names(data) <- mapping.col$new_name

如果顺序不同,则可以使用match首先将它们匹配到正确的位置:

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

顺便说一句,分配名称和其他属性总是通过某种分配来完成。 setNames返回的内容仍然需要分配。