IT干货网

通过搜索列名重命名数据框的列

jiqing9006 2024年11月24日 编程设计 74 0

我正在为 ggplot 编写一个包装器,以根据各种数据集生成多个图形。当我将列名传递给函数时,我需要重命名列名,以便 ggplot 可以理解引用。

但是,我正在努力重命名数据框的列

这是一个数据框:

df <- data.frame(col1=1:3,col2=3:5,col3=6:8) 

这是我用于搜索的列名称:
col1_search <- "col1" 
col2_search <- "col2" 
col3_search <- "col3" 

这里是要替换的列名:
col1_replace <- "new_col1" 
col2_replace <- "new_col2" 
col3_replace <- "new_col3" 

当我搜索列名时,R 对列索引进行排序并忽略搜索位置。

例如,当我运行以下代码时,我希望新标题为 new_col1、new_col2 和 new_col3,而新列名称为:new_col3、new_col2 和 new_col1
colnames(df)[names(df) %in% c(col3_search,col2_search,col1_search)] <- c(col3_replace,col2_replace,col1_replace) 

有没有人有解决方案,我可以搜索列名并按该顺序替换它们?

请您参考如下方法:

require(plyr) 
df <- data.frame(col2=1:3,col1=3:5,col3=6:8) 
df <- rename(df, c("col1"="new_col1", "col2"="new_col2", "col3"="new_col3")) 
df 

您可以创造性地将第二个参数设为 rename所以它不是那么手动。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!