r - 使用从标头中提取的信息重命名 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。
解决方案
您可以使用 重命名列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"
推荐阅读
- amazon-web-services - 使用 NGINX 添加 AWS 公共证书
- python - 我可以在 jupyter 中将 python 代码注释显示为降价吗?
- java - 导入 Maven 项目时是否应该在版本控制中检查 Eclipse 设置文件?
- python - 将 df.describe().loc['top'] 和 df.describe().loc['freq'] 放入图中
- c++ - 如何迭代可变参数模板类型(不是参数)?
- powershell - 将 REST API 响应转换为表
- python - 从批处理文件激活 virtualenv 会导致新命令提示符中的 venv
- c# - 在 Asp.net C# 中合并具有相同列值的中继器行
- asp.net - asp 3.5 主页的默认名称是什么?
- php - 我如何在 PHP 中编码供应商提供的这条指令“DELETE /
/取消订阅/"