R语言代码相关标准提问

关于如何提问,如何高效沟通,其实我们讲解非常多了,比如我一直推崇的邮件交流:如果你希望我回答你的问题 ,然后也会随机抽取粉丝提问进行解答:答读者问第一弹:R里面差异分析的limma包用法细节 。 也高度赞扬郭一些提问交流的模式,比如:求助:Zotero中添加Markdown插件失败
还亲自写了一个提问参考范文:如果这样问问题,大家可能会更趋向于帮助我 ,都是非常值得大家学习的,不过对于简单的R代码咨询,主要都是一些ID转换,字符串操作技巧等等,我这里还有另外一个提问沟通指南。

如果是提问热图

好久之前的学徒问的,他绘制的热图,两个问题,首先颜色不明显,其次分组那个图例看不到了,溢出。

我就建议他把数据代码打包一份,如下:

然后发给我,我解压后,就可以直接打开Rproj文件,使用那个 run.R 代码,根据他的数据进行图表复现,如下:

load(file = 'for_cor.Rdata')
library(pheatmap)
pheatmap(m, 
 annotation_col=ac)
pheatmap(m,show_colnames =F,show_rownames = F,
 annotation_col=ac)

发现真的如他所描述的,出图很诡异,所以我修改了一个参数,就是 border_color ,可以解决热图颜色问题,但是无法解决分组那个图例看不到了,溢出的问题,所以就跟其他学徒讨论,发现居然修改分组的名称可以解决,最后的代码如下:

pheatmap(m,show_colnames =F,show_rownames = F,
 border_color = NA,
 annotation_col=ac)
head(ac)
colnames(ac)='group_list'
pheatmap(m,show_colnames =F,show_rownames = F,
 border_color = NA,
 annotation_col=ac)

最后出图如下:

就是提问者想要的,一模一样的!
这样的沟通就非常高效率,把数据代码打包一份,我里面可以重复出来他们的问题所在,根据自己的经验来帮助提问者。

也不是不可以简洁

如果你觉得把测试数据、代码和proj文件一起打包起来,会比较麻烦,那么把你的提问精炼,抽提出来重点,也是一种方式,比如其实你只是想知道下面的3行的数据框,如何根据第二列的分号这个分隔符进行拆分后变成4列:

options(stringsAsFactors = F)
a=data.frame(x=c('A','B','C'),
 y=c('TP53','KCNMA1;RP11-443A13.5','BRCA1'))
a
do.call(rbind,lapply(1:nrow(a), function(i){
 x=as.character(a[i,])
 return(data.frame(sample=x[1],
 gene=unlist(strsplit(x[2],";")[[1]])))
}))

可以看到,之前的一行就被拆分成为了2行

有效的沟通,助力幸福的生活!

Comments are closed.