簡體   English   中英

使用從 header 中提取的信息重命名 R 中的 header

[英]Rename header in R with extracted information from the header

如何根據當前 header 中的信息重命名 R 中的 header?

我的 df 看起來像:

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

第 1 行:(BF13A;0;14572)

第 2 行:(BF13B;0;24215)

ETC

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

header:(索引;放線菌;擬桿菌)

第 1 行:(BF13A;0;14572)

第 2 行:(BF13B;0;24215)

等等。

順便說一句,我的分類信息列多於兩列,因此此類解決方案也適用於更大的 df。

您可以使用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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM