今天是生信星球陪你的第599天


大神一句话,菜鸟跑半年。我不是大神,但我可以缩短你走弯路的半年~

就像歌儿唱的那样,如果你不知道该往哪儿走,就留在这学点生信好不好~

这里有豆豆和花花的学习历程,从新手到进阶,生信路上有你有我!


前面写过这篇:批量绘制箱线图https://www.jianshu.com/p/ec9034fe9a2c
今天发现了新问题。是aes和for循环的八字不合的诡异现象,来分析一下大家看看,能不能破:

1.示例数据

mat 60),nrow=

mat2长这样:


我们的目的是对对每一个基因画箱线图,这可以通过gather+分面或者for循环+aes_string来实现,这个没有问题。

尝试1:当不用for循环的时候

p1 = ggplot(data=mat2)+  geom_boxplot(aes(x=group,y=mat2[,1],color = group))p2 = ggplot(data=mat2)+  geom_boxplot(aes(x=group,y=mat2[,2],color = group))library(patchwork)p1+p2

成功了。

尝试2:把1和2替换成i,传参试试

i=1p1 = ggplot(data=mat2)+  geom_boxplot(aes(x=group,y=mat2[,i],color = group))i=2p2 = ggplot(data=mat2)+  geom_boxplot(aes(x=group,y=mat2[,i],color = group))library(patchwork)p1+p2

所以放进for循环也是一样的,会出10张一样的图

p=list()for(i in 1:10){  p[[i]]=ggplot(data=mat2)+    geom_boxplot(aes(x=group,y=mat2[,i],color = group))}wrap_plots(p,nrow=2,guides = 'collect')

所有图都一样,所以失败了。

尝试3:换apply试试呢?

1:

所以你说,aes它不能传参吗?是不能,大佬们说需要传参就改成aes_string,它确实可以。但我好奇是为什么apply就能做出来。可能是因为它的循环方式和for循环不一样?

把这个apply的循环方式原样替换到for循环里,仍然是不行的:

p = list()n = 0for(i in mat2[,1:10]){  n = n+1  p[[n]]=ggplot(data=mat2)+    geom_boxplot(aes(x=group,y=i,color = group))}wrap_plots(p,nrow=2,guides = 'collect')

失败+1

But,如果我非要用for循环实现呢?

什么叫倔强,可能我撞了南墙才会回头吧,可能我见了黄河才会死心吧~aaa,想用,那就是有办法的。实在不行,我们每次改完数据再作图就好了!

一个知识点,当gene这一列不存在于mat2的时候,mat2$gene = i表示新增一列,列名为gene,内容为i。当gene这一列存在于mat2的时候,mat2$gene = i表示修改gene这一列的内容,改为i。

p = list()n = 0for(i in mat2[,1:10]){  n = n+1  mat2$gene = i  p[[n]]=ggplot(data=mat2)+    geom_boxplot(aes(x=group,y=gene,color = group))}wrap_plots(p,nrow=2,guides = 'collect')

一个意义不大的问题引起了我的兴趣,两个小时又木有了。没办法,谁叫我对R语言兴趣至深,爱得深沉 哈哈。

当你即将放弃,其实彼岸已经在眼前

小郭发来aes帮助文档里的一段例子:


我们都在惊叹,两个叹号是什么操作???

p=list()for(i in 1:10) {  p[[i]] = ggplot(data = df, aes(x = group, y = !!df[, i])) +    geom_boxplot(aes(color = group))}library(patchwork)wrap_plots(p, nrow = 2, guides = 'collect')

问题就这么解决了!你说诡异不诡异。ggplot2博大精深,大佬们玩的很深沉,表示十分佩服。
ps:你会看到每种方法出来的列名都是不一样的,但那个可以改,加个labels参数就行了。

插个小广告!

生信零基础入门学习小组

全国巡讲全球听(生信线上直播课)

数据挖掘线上班来袭(两天变三周,实力加量)

一起来学单细胞吗?

linux for循环套for循环格式_为什么for循环和aes八字不合相关推荐

  1. c语言永真循环格式,C语言的循环结构.ppt

    C++语言的循环结构,杨 基 伦 在程序设计工作中,为了完成既的任务,必须有效地控制程序流程,也就是要控制好语句的执行顺序.程序的流程控制有多种方式,但基本上有三种:即顺序控制.条件分支控制和循环控制 ...

  2. for循环递减_讲讲关于循环的那些事

    每个人一生中都至少应该获得一次全场起立鼓掌的机会,因为我们都曾胜过这个世界.-R.J.帕拉西奥<奇迹男孩> 导言:希腊哲学家Zeno曾经说"运动是不可能的.由于运动的物体在到达目 ...

  3. 单曲循环 翻译_单曲循环是什么意思

    1. 已经单曲循环这首歌几个小时了. How Could This Be? You Not There With Me. 2. 播放模式也比较完善,有单曲,顺序,循环,随机播放等模式. It has ...

  4. python有几种循环语句_[14] Python循环语句(一)

    1. 概述 今天我们介绍循环语句,和条件判断一样,我们从流程图开始看起.首先看一下学习计划列表,粗体为已学,斜体为新增或修改内容.计算机编程的原理简要介绍 集成开发环境PyCharm 变量名.数字.字 ...

  5. linux for循环套for循环格式_4.20 for循环 break、continue关键字

    循环 1. for循环[重点] for for循环的优势:1. for之后的小括号内容,可读性更强2. 可以通过for之后小括号,里面的内容大概推算出整个循环会执行多少次3. for循环和一些特殊的数 ...

  6. linux for循环套for循环格式_FOR循环指令案例详解

    当一个或者多个指令(程序)重复多次(次数可知)时,可使用FOR指令.FOR为有限次循环指令. 如上图,程序的执行过程主要分为3个步骤,输入检测.程序扫描.输出刷新.这是plc一个工作周期的工作顺序,在 ...

  7. python中for循环格式_如何将python中for循环的输出写入csv格式的文件?

    我认为这样的方法可以做到(假设输出文件是制表符分隔的):import csv import os receptors = ['crystal_1', 'modeller_1', 'moe_1', 'n ...

  8. 单曲循环 翻译_“单曲循环”用英语怎么说?

    展开全部 单曲循环的英语是:Single tune circulation. 1.single单曲的意思. 2.tune,发音:英[tju:n],美[tu:n]. 释义:曲调,曲子; 和谐,调谐; 语 ...

  9. java for循环 等待_在forEach循环中使用异步/等待

    在forEach循环中使用async / await是否有任何问题? 我正在尝试遍历文件数组并await每个文件的内容. import fs from 'fs-promise' async funct ...

最新文章

  1. java 独占锁_锁分类(独占锁、分拆锁、分离锁、分布式锁)
  2. Mysql 的子查询
  3. php与服务器关系,php与web服务器关系
  4. 测试常用工具下载地址,LR11、QC11
  5. 关于高考报志愿的一些规划建议
  6. 怎么查看电脑有没有python_使用python获取电脑的磁盘信息方法
  7. 机器学习(聚类七)——层次聚类的优化算法
  8. windows10打开natapp.exe 报Error: oppen NUL: The system cannot find the file specified.
  9. c语言大作业宿舍管理系统,数据库大作业——学生宿舍管理系统
  10. 几何公差标注示例及解释——直线度
  11. elasticsearch rpm安装及详细配置
  12. Mac苹果电脑批量修改图片大小的方法
  13. maven到底是什么
  14. 在微信小程序中将获取到的经纬度(经度纬度)转地址(地名)
  15. linux module load, show, 包管理,找到包的路径
  16. 如何学习VB最新总结
  17. 计算几何:正多边形的滚动与旋轮线…
  18. 卸载php和apache,怎么卸载apache服务器
  19. hp服务器重装系统按什么键,惠普重装系统按什么键|惠普u盘装系统按哪个键
  20. 灰色产业链带来的合法正当的行业收入

热门文章

  1. 【Mysql如何纵列变横列】
  2. 观看unity自制vr场景_观看VR
  3. Crowd Counting读取data及density map
  4. 测试人员如何突破自我的瓶颈?
  5. Smartsheet项目协作与目标管理工具
  6. [15单片机] STC15F104W开发入门及模拟串口程序
  7. 清华大学 计算机系 尹霞,轮椅上的清华博士毕业了,刷屏的还有她 .
  8. 爬虫获取网易云评论并写入csv文件
  9. 全球同服游戏服务端设计
  10. java 热词_一个热词推荐的简单实现