如何将dataframe列名后缀移至开头?(A01_rep1转rep1_A01)
交换DataFrame列名的前后缀部分
针对你需要把A01_rep1这类列名改成rep1_A01的需求,用gsub配合正则捕获组就能精准实现,不用复杂操作:
核心代码
# 直接修改counts的列名 colnames(counts) <- gsub("(.*)_(rep\\d+)", "\\2_\\1", colnames(counts))
正则说明
(.*):捕获下划线前的所有内容(比如A01)_(rep\\d+):匹配下划线,同时捕获rep加数字的部分(比如rep1)\\2_\\1:把第二个捕获组(重复组标识)移到前面,第一个捕获组(样本编号)放在后面,中间用下划线连接
更严谨的写法(针对固定格式的样本编号)
如果你的样本编号都是A加两位数字的格式,可以用更精准的正则避免意外匹配:
colnames(counts) <- gsub("([A-Z]\\d{2})_(rep\\d+)", "\\2_\\1", colnames(counts))
测试验证
你可以先拿测试列名验证逻辑:
test_cols <- c("A01_rep1", "A02_rep1", "A03_rep1", "A01_rep2", "A02_rep2") gsub("(.*)_(rep\\d+)", "\\2_\\1", test_cols) # 输出:"rep1_A01" "rep1_A02" "rep1_A03" "rep2_A01" "rep2_A02"
内容的提问来源于stack exchange,提问作者mike ropri
相关产品推荐
相关产品推荐

