将colnames替换为colname的子字符串

时间:2016-03-27 19:04:29

标签: r

我想知道如何将数据框的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"

2 个答案:

答案 0 :(得分:2)

我们可以使用sub?basename从列名中提取子字符串。将输出分配回列名以反映更改。

colnames(df.iso) <- sub("\\..*", '', basename(colnames(df.iso)))

如果我们不想使用basenamesub也可以单独使用。

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))

也应该这样做。他的第一种方法可能更快,这可能在这里无关紧要。