前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >可能只是一个函数,却要耗费你大半天

可能只是一个函数,却要耗费你大半天

作者头像
生信技能树
发布2018-07-27 12:58:02
4740
发布2018-07-27 12:58:02
举报
文章被收录于专栏:生信技能树生信技能树

相信很多人都有这样的体会吧,为了一件小事,耽搁了大半天功夫

——你的努力不会白费

好像不少人问过我一个聚类后的树如何根据肉眼观察到的cluster情况来提前指定的树的子集,有点类似于WGCNA分析把几千个基因划分成若干个module后能提取各个module的基因集合。

比如,在R里面输入: plot(hclust(dist(mtcars))) 会出图如下:

如果想提取中间的一个子集,不知道有cutree函数的就会纠结半天,但是知道的,就下面几句话而已。

hc=hclust(dist(mtcars))

g=cutree(hc,3)

table(g)

黑魔法

统计了近期的近百份咨询email,发现R里面的黑魔法被提及的频率非常高。特意开辟这个黑魔法合集。我抛砖引玉吧。首先是在R里面把变量write.table之后竟然不一定能read.table,尤其需要注意一些参数:quote = F,row.names =F 参考:http://www.biotrainee.com/thread-1042-1-1.html然后是:缺失一些元素的矩阵读取报错,需要在read.table里面加上fill=TRUE参考:http://www.biotrainee.com/thread-703-1-1.html还有,读取带引号的文件,比如某一些KEGG通路名字里面有引号,其余的却没有。最后,文件读取进来R里面经常就变成factor了,需要加上参数避免这一件事。最后,所有的错误,都可以通过调试来找到的,希望你们多折腾http://www.biotrainee.com/thread-778-1-1.html

其他优秀跟帖

用pheatmap画图热图的时候不需要前面加png或pdf这类的函数创建画板,在pheatmap里面本身就有了,只需要直接在pheatmap里面定义出图的格式就能直接有了。不然就会多出一张白图。

R读入数据时表头被添加X,check.names搞定read.csv("filename.csv",check.names=FALSE)

在一个大loop中每次都call函数,如果在某次迭代中出现报错,会非常DT(比如跑logistic regression出现无法converge的情况)。那么我们怎么样让大循环不被某次迭代的函数error打断呢?你可以在循环中不直接call function,而用try去call。例如:for (i in 1:10000) { model <- try(lm(...), silent = T) if (class(model) != 'try-error') {.... #函数没有报错的操作} else {... #函数报错的操作} }

终极经验

学习R语言,报错是必然的,R里面的黑魔法早已经被各种吐槽了,不过不怕,只需要记住3个函数即可!

你head一下出错的地方的变量,看看里面的数据是不是你想象的那样! 然后str一下那些变量,看看那些数据是不是表面上看起来那样! 最后你help一下,看看是不是某些函数的某些参数你忽略掉了? head,str,help 初学者把这3个函数敲一百遍,就入门了R语言! head,str,help 初学者把这3个函数敲一百遍,就入门了R语言!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档