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行