如何为R语言dataframe中非MGH开头的行名添加指定前缀与后缀
R语言DataFrame行名批量修改方案
需求说明
需要对指定DataFrame的行名做如下处理:
- 对不以
MGH开头的行名:先清理多余空格,再添加前缀X和后缀.bam - 以
MGH开头的行名:仅清理多余空格,保持原有格式不变
例如原行名"115-031814 "会修改为"X115-031814.bam",而"MGH208_031115-1.bam "仅清理空格后保留为"MGH208_031115-1.bam"。
完整实现代码
首先加载你的数据框:
df <- structure(list(Treatnent.state = c("PRE Immune Checkpoint Blockade Therapy", "PRE Immune Checkpoint Blockade Therapy", "PRE Immune Checkpoint Blockade Therapy", "PRE Immune Checkpoint Blockade Therapy", "PRE Immune Checkpoint Blockade Therapy", "PRE Immune Checkpoint Blockade Therapy", "PRE Immune Checkpoint Blockade Therapy (On dabrafenib+trametinib)", "PRE Immune Checkpoint Blockade Therapy", "PRE Immune Checkpoint Blockade Therapy", "PRE Immune Checkpoint Blockade Therapy", "PRE Immune Checkpoint Blockade Therapy", "PRE Immune Checkpoint Blockade Therapy", "PRE Immune Checkpoint Blockade Therapy (On dabrafenib+trametinib)", "PRE Immune Checkpoint Blockade Therapy (On dabrafenib+trametinib)" ), timepoint = c(-6, 0, 0, 0, 0, -1, 0, -3, -2, 0, 0, -1, 0, 0), Patient = c(115, 148, 208, 208, 272, 39, 42, 422, 62, 208, 208, 39, 42, 42)), class = "data.frame", row.names = c("115-031814 ", "148-6-5-14_S9 ", "208-3-11-15_S13 ", "208-9-10-14_S11 ", "272-121914 ", "39-3-31-14_S15 ", "42-10-17-14_S3 ", "422-092815 ", "62-10-2-13_S6 ", "MGH208_031115-1.bam ", "MGH208_031115-2.bam ", "MGH39_033114.bam ", "MGH42_101714.bam ", "MGH42_101714_1.bam "))
执行行名修改:
# 1. 清理行名中的首尾空格 clean_rownames <- trimws(rownames(df)) # 2. 按条件生成新行名 new_rownames <- ifelse( grepl("^MGH", clean_rownames), # 判断是否以MGH开头 clean_rownames, # 符合条件则保留原格式 paste0("X", clean_rownames, ".bam") # 不符合则添加前缀后缀 ) # 3. 将新行名赋值回数据框 rownames(df) <- new_rownames
修改后验证
运行rownames(df)可得到处理后的行名:
[1] "X115-031814.bam" "X148-6-5-14_S9.bam" "X208-3-11-15_S13.bam" "X208-9-10-14_S11.bam" [5] "X272-121914.bam" "X39-3-31-14_S15.bam" "X42-10-17-14_S3.bam" "X422-092815.bam" [9] "X62-10-2-13_S6.bam" "MGH208_031115-1.bam" "MGH208_031115-2.bam" "MGH39_033114.bam" [13] "MGH42_101714.bam" "MGH42_101714_1.bam"
内容的提问来源于stack exchange,提问作者Programming Noob
相关产品推荐
相关产品推荐

