我怎样才能让我更优雅?

时间:2014-09-23 17:09:17

标签: r sorting

我有以下数据框,基因组坐标我希望以增加的方式按第一和第二列排序:

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”,但我想知道是否有更“优雅”的一个班轮?

谢谢!

2 个答案:

答案 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