R语言技巧每日分享day5-对因子水平快速排序reorder

R中的reorder()函数用于将factor的level快速排序

用法:reorder(x, X, decreasing = FALSE)

  • x为原始的vector
  • X为期望因子排序的量,长度与x相同。若为character,按字母顺序排,若为数字,按从小到大的顺序排
  • decreasing参数与order和sort的decreasing参数相同,默认为F,从小到大
  • 注:若给第二个参数前添加负号,即-X,也可以达到按相反方向排序的效果

例:

> gene <- c("PSMD1", "GRPEL2", "UCK2", "SEPHS1","UTP11", "KPNA2", "EIF5B", "YARS1")
> coef <- c(0.0058, 0.0117, 0.0135, 0.0065,0.0515, 0.0007, 0.0008, 0.008)
> reorder(gene, coef)
[1] PSMD1  GRPEL2 UCK2   SEPHS1 UTP11  KPNA2  EIF5B  YARS1 
attr(,"scores")
 EIF5B GRPEL2  KPNA2  PSMD1 SEPHS1   UCK2  UTP11  YARS1 
0.0008 0.0117 0.0007 0.0058 0.0065 0.0135 0.0515 0.0080 
Levels: KPNA2 EIF5B PSMD1 SEPHS1 YARS1 GRPEL2 UCK2 UTP11

可以看到:

  • reorder的返回值与原向量相同
  • reorder的返回值的因子水平会按照第二个参数进行排序

  • reorder在使用ggplot2进行画图时对横/纵坐标制定顺序时非常有用

例:

ggplot(mapping = aes(x = gene, y = coef)) + 
  geom_bar(stat = "identity")
reorder前
ggplot(mapping = aes(x = reorder(gene, coef), y = coef)) + 
  geom_bar(stat = "identity")
reorder后

参考

https://zhuanlan.zhihu.com/p/511112576

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容