我有以下数据框,基因组坐标我希望以增加的方式按第一和第二列排序:
chr4 085976379 111570775
chr1 004336501 141626155
chr10 003051921 081538660
...
我的代码:
dat[order(dat[,1], dat[,2]), ]
我明白了:
chr1 004336501 141626155
chr10 003051921 081538660
chr4 085976379 111570775
但是,我想:
chr1 004336501 141626155
chr4 085976379 111570775
chr10 003051921 081538660
我可以删除“chr”,度假,然后添加“chr”,但我想知道是否有更“优雅”的一个班轮?
谢谢!
答案 0 :(得分:1)
你可以尝试:
dat[order(as.numeric(gsub("chr", "",dat[,1])), dat[,2]), ]
V1 V2 V3
2 chr1 4336501 141626155
1 chr4 85976379 111570775
3 chr10 3051921 81538660
答案 1 :(得分:0)
您也可以尝试“gtools”套餐中的mixedorder
:
library(gtools)
mixedorder(mydf$V1)
# [1] 2 1 3
mydf[order(mixedorder(mydf$V1), mydf$V2), ]
# V1 V2 V3
# 2 chr1 4336501 141626155
# 1 chr4 85976379 111570775
# 3 chr10 3051921 81538660