今天為一個用 R 畫畫的小腳本第一次到傳說中 的萬事屋 StackOverflow 去 發問 了,謹為文記念。 在我一拐一拐學著 R 的過程中,帶我前進的拉力的成分幾乎全是 StackOverflow (至於推力嘛,當然就是在實驗室生活中越養越肥美的懶病),如果沒有它,我想寫出來偷懶的腳本十個有十一個會寫到 library(stringr) 就結束囉。 今天的問題來自之前為了把電位測定的紀錄畫成圖而寫的腳本,是個裡面充滿巢狀的 for - loop 迴圈的恐怖玩意,它雖然會動但因為難以讀懂所以也不太可能再加功能進去。無奈我發下豪語說「啊,這個反正用 R 弄很快」的那個心血來潮只生出個別樣本的電位圖,至於總結的摘要圖當時就沒做了。 不過說到底,最重要的根本就是總結圖…… 動手改的過程當中對於執行速度之緩慢感到不耐煩,想起之前看過的 讀取速度比較 文,我決定歸咎給最開始的 read.table() 跑太慢,目前讀一個原始檔大概要花十秒。 開開心心的戴入 data.table 套件,我理想的流程是這樣的:把讀取的部分用 fread() 重寫一次,然後進到後面的迴圈海整理出可讀的版本再往下做。事實上…… Error in fread( "test.txt" , fill = TRUE , sep = "\t" , quote = "" , header = FALSE ) : Expecting 3 cols, but line 258088 contains text after processing all cols. Try again with fill= TRUE . Another reason could be that fread 's logic in distinguishing one or more fields having embedded sep=' ' and/or (unescaped) ' \n ' characters within unbalanced unescaped quotes has failed. If quote=' ' doesn' t...