首页 > 解决方案 > 使用从标头中提取的信息重命名 R 中的标头

问题描述

如何根据当前标题中的信息重命名 R 中的标题?

我的 df 看起来像:

标题:(索引;d__Bacteria.p__Actinobacteriota.c__Actinobacteria;d__Bacteria.p__Bacteroidota.c__Bacteroidia)

第 1 行:(BF13A;0;14572)

第 2 行:(BF13B;0;24215)

ETC

我想用分类信息 (d__Bacteria.) 重命名列,使其只有 c__ 之后的信息

标题:(索引;放线菌;拟杆菌)

第 1 行:(BF13A;0;14572)

第 2 行:(BF13B;0;24215)

等等。

顺便说一句,我的分类信息列多于两列,因此此类解决方案也适用于更大的 df。

标签: rqiime

解决方案


您可以使用 重命名列tidyverse。像下面这样的东西,

library(tidyverse)
df %>% 
  rename(
    Actinobacteria = d__Bacteria.p__Actinobacteriota.c__Actinobacteria,
    Bacteroidia = d__Bacteria.p__Bacteroidota.c__Bacteroidia
    )

这也可以使用基本函数来完成

names(df)[names(df) == "d__Bacteria.p__Actinobacteriota.c__Actinobacteria"] <- "Actinobacteria"
names(df)[names(df) == "d__Bacteria.p__Bacteroidota.c__Bacteroidia"] <- "Bacteroidia"

您可以像这样修改旧名称,而不是设置新的列名

new_df <- df  %>% 
  setNames(substring(names(.),regexpr(".c_", names(.)) + 4)) 
> colnames(new_df)
[1] "Actinobacteria" "Bacteroidia"

推荐阅读