R語言代碼相關疑問標準提問
- 2019 年 10 月 6 日
- 筆記
關於如何提問,如何高效溝通,其實我們講解了非常多了,比如我一直推崇的郵件交流:如果你希望我回答你的問題 ,然後也會隨機抽取粉絲提問進行解答:答讀者問第一彈: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行
