其他
可能只是一个函数,却要耗费你大半天
相信很多人都有这样的体会吧,为了一件小事,耽搁了大半天功夫
——你的努力不会白费
如果想提取中间的一个子集,不知道有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语言!
head,str,help 初学者把这3个函数敲一百遍,就入门了R语言!
欢迎长得帅的朋友点击下面的阅读原文参与回帖哈