不懂内在逻辑的时候,想要正确完全靠的是运气,主要看两组的命名,比如,一个3vs3的实验,我们的分组是这个样子的。
前面三个是control,后面三个是treat。这时候,算出来的结果就是treat比上control,没有问题。因为默认情况下因子的排序是按照字母的前后顺序排列的,control在treat之前。
如果我们把两组命名为,cancer 和normal
那么由于n在c的后面,所以最终的结果会变成normal比上cancer,所以的差异基因变化值都会相反。
如何 避免呢?这里要用到因子的排序。只要每次在levels里面,把真实的对照组放在前面就可以了。
换一个名字也是一样的,只要把对照组放在前面即可
设置了分组后,接下来的操作是固定的
最终只有输出差异基因的时候要强调一下,coef要选择2。
其中,group不一定是要很整齐的前面是对照,后面是处理,样本的顺序可以是乱的。比如这一篇中的group也是可以的。
GEO的样本名称太多而且排序不规则,你们都是手动分组的么?
第一次件ifelse嵌套这么多的使用,你是跟自己有仇么,非要把问题搞的这么复杂。。。建议用if条件句,或者BASE中原始方法修改。
ifelse个人觉得嵌套两个最优。再多必然晕。
使用R包dplyr的函数arrange更简单,更简洁:
#多条件排序:使用dplyr::arrange
library(dplyr)
data("iris")
head(iris)
#第一列升序,然后是第三列升序
arrange(iris,iris[,1],iris[,3])
#第一列升序,然后是第三列降序
arrange(iris,iris[,1],-iris[,3])
扩展资料
R语言排序函数sort(),rank(),order()
>x<-c(97,93,85,74,32,100,99,67)
>sort(x)
[1]32677485939799100
>order(x)
[1]58432176
>rank(x)
[1]65431872