linux for循环套for循环格式_为什么for循环和aes八字不合
今天是生信星球陪你的第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八字不合相关推荐
- c语言永真循环格式,C语言的循环结构.ppt
C++语言的循环结构,杨 基 伦 在程序设计工作中,为了完成既的任务,必须有效地控制程序流程,也就是要控制好语句的执行顺序.程序的流程控制有多种方式,但基本上有三种:即顺序控制.条件分支控制和循环控制 ...
- for循环递减_讲讲关于循环的那些事
每个人一生中都至少应该获得一次全场起立鼓掌的机会,因为我们都曾胜过这个世界.-R.J.帕拉西奥<奇迹男孩> 导言:希腊哲学家Zeno曾经说"运动是不可能的.由于运动的物体在到达目 ...
- 单曲循环 翻译_单曲循环是什么意思
1. 已经单曲循环这首歌几个小时了. How Could This Be? You Not There With Me. 2. 播放模式也比较完善,有单曲,顺序,循环,随机播放等模式. It has ...
- python有几种循环语句_[14] Python循环语句(一)
1. 概述 今天我们介绍循环语句,和条件判断一样,我们从流程图开始看起.首先看一下学习计划列表,粗体为已学,斜体为新增或修改内容.计算机编程的原理简要介绍 集成开发环境PyCharm 变量名.数字.字 ...
- linux for循环套for循环格式_4.20 for循环 break、continue关键字
循环 1. for循环[重点] for for循环的优势:1. for之后的小括号内容,可读性更强2. 可以通过for之后小括号,里面的内容大概推算出整个循环会执行多少次3. for循环和一些特殊的数 ...
- linux for循环套for循环格式_FOR循环指令案例详解
当一个或者多个指令(程序)重复多次(次数可知)时,可使用FOR指令.FOR为有限次循环指令. 如上图,程序的执行过程主要分为3个步骤,输入检测.程序扫描.输出刷新.这是plc一个工作周期的工作顺序,在 ...
- python中for循环格式_如何将python中for循环的输出写入csv格式的文件?
我认为这样的方法可以做到(假设输出文件是制表符分隔的):import csv import os receptors = ['crystal_1', 'modeller_1', 'moe_1', 'n ...
- 单曲循环 翻译_“单曲循环”用英语怎么说?
展开全部 单曲循环的英语是:Single tune circulation. 1.single单曲的意思. 2.tune,发音:英[tju:n],美[tu:n]. 释义:曲调,曲子; 和谐,调谐; 语 ...
- java for循环 等待_在forEach循环中使用异步/等待
在forEach循环中使用async / await是否有任何问题? 我正在尝试遍历文件数组并await每个文件的内容. import fs from 'fs-promise' async funct ...
最新文章
- java 独占锁_锁分类(独占锁、分拆锁、分离锁、分布式锁)
- Mysql 的子查询
- php与服务器关系,php与web服务器关系
- 测试常用工具下载地址,LR11、QC11
- 关于高考报志愿的一些规划建议
- 怎么查看电脑有没有python_使用python获取电脑的磁盘信息方法
- 机器学习(聚类七)——层次聚类的优化算法
- windows10打开natapp.exe 报Error: oppen NUL: The system cannot find the file specified.
- c语言大作业宿舍管理系统,数据库大作业——学生宿舍管理系统
- 几何公差标注示例及解释——直线度
- elasticsearch rpm安装及详细配置
- Mac苹果电脑批量修改图片大小的方法
- maven到底是什么
- 在微信小程序中将获取到的经纬度(经度纬度)转地址(地名)
- linux module load, show, 包管理,找到包的路径
- 如何学习VB最新总结
- 计算几何:正多边形的滚动与旋轮线…
- 卸载php和apache,怎么卸载apache服务器
- hp服务器重装系统按什么键,惠普重装系统按什么键|惠普u盘装系统按哪个键
- 灰色产业链带来的合法正当的行业收入