2014-09-23 114 views
2

我有以下的数据帧,与基因组的协调,我希望由第一和第二列进行排序无论是在增加的方式:我该如何让自己更优雅?

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

谢谢!

回答

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 
+0

非常感谢您!正是我需要的! – Johnathan 2014-09-23 17:25:17

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 
相关问题