我正在尝试重命名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被引用到图像
答案 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
返回的内容仍然需要分配。