当前位置:网站首页>R中按照数字大小进行排序
R中按照数字大小进行排序
2022-07-30 14:44:00 【Listenlii-生物信息知识分享】
在R中有时会需要通过数字大小对某些数据进行排序。
不过R默认是按照字符大小顺序进行排序,如常见的OTU名称:
OTU1,OTU2,OTU3,OTU10 ,OTU20...
会被默认排序为:
OTU1,OTU10,OTU2,OTU20,OTU3...
这在一些数据处理和画图过程非常不方便。
如果要按照数字排序为OTU1,OTU2,OTU10这种,可以有很多方法,本文举几种简单的例子:
先读进一个OTU表~
otu = read.table(file = "otu.txt",sep="\t",row.names = 1,header=T,check.names=F)
# 行名为OTU的名字
name = rownames(OTU)
1. gtools包的mixedorder函数,一步到位直接对OTU名字中的数字排序:
library(gtools)
a = mixedorder(name)
otu2 = otu[a,]
2. stringr包的str_order函数类似:
library(stringr)
b = str_order(name, numeric = TRUE)
otu2 = otu[b,]
3. OTU名字去掉OTU只保留数字再排序:
c = order(as.numeric(gsub("OTU","",name)))
otu2 = otu[c,]
4.OTU名字中的OTU和数字分开,单独对数字排序:
d = order(as.numeric(sapply(strsplit(name,"Zotu"),"[",2)))
otu2 = otu[d,]
5.根据OTU名字的字节数进行排序:
e = name[order(nchar(name),name)]
otu2 = otu[e,]
还有其他多种方法,不再赘述,Over~~~
边栏推荐
猜你喜欢

Installing and Uninstalling MySQL on Mac

基于5G的仓储信息化解决方案2022

Flink optimization

90后人大硕士为学医竟重新高考,成功被首医大录取

嵌入式开发:嵌入式基础知识——正确启动固件项目的 10 条建议

存储器映射、位带操作

Mac 中 MySQL 的安装与卸载

About the data synchronization delay of MySQL master-slave replication

Office Automation | Office Software and Edraw MindMaster Shortcuts

使用 protobuf 进行数据序列化
随机推荐
软件包 - 笔记
Use of InputStream and OutputStream
分布式前修课:MySQL实现分布式锁
CS内网横向移动 模拟渗透实操 超详细
【回归预测-lssvm分类】基于最小二乘支持向量机lssvm实现数据分类代码
Flink real-time data warehouse completed
本地事务与分布式事务
异常情况处置方案
Local Transactions vs Distributed Transactions
MongoDB启动报错 Process: 29784 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=14)
数字量输入模块io
调试 - 笔记
ECCV 2022 | Towards Data Efficient Transformer Object Detectors
The highest level of wiring in the computer room, the beauty is suffocating
The evolution of content products has three axes: traffic, technology, and product form
使用 protobuf 进行数据序列化
Could not acquire management access for administration
[机缘参悟-53]:《素书》-3-修身养志[求人之志章第三]
如何写一份高可读性的软件工程设计文档
元宇宙的前景及四大赛道