我想知道如何将数据框的colnames替换为原始colname中的唯一字符串?
> colnames(df.iso)
[1] "../trimmed/100G.tally.fasta" "../trimmed/100R.tally.fasta" "../trimmed/106G.tally.fasta"
[4] "../trimmed/106R.tally.fasta" "../trimmed/122G.tally.fasta" "../trimmed/122R.tally.fasta"
[7] "../trimmed/124G.tally.fasta" "../trimmed/124R.tally.fasta" "../trimmed/126G.tally.fasta"
[10] "../trimmed/126R.tally.fasta" "../trimmed/134G.tally.fasta" "../trimmed/134R.tally.fasta"
答案 0 :(得分:2)
我们可以使用sub
和?basename
从列名中提取子字符串。将输出分配回列名以反映更改。
colnames(df.iso) <- sub("\\..*", '', basename(colnames(df.iso)))
如果我们不想使用basename
,sub
也可以单独使用。
colnames(df.iso) <- sub("([^/]+/){2}([^.]+).*",
"\\2", colnames(df.iso))
答案 1 :(得分:1)
与@ Akrun的第二个答案类似,
colnames(df.iso) <- sub("[^0-9]+([0-9]+[A-Z])\\.tal.*", "\\1", colnames(df.iso))
也应该这样做。他的第一种方法可能更快,这可能在这里无关紧要。