很多 R 用戶都只覺得自己是初學者,但何謂初學者?
中國人有謙遜的傳統,很多人都會說自己是初學者,但其實很多人都早已超越那個水平。
對我來說,初學者水平就是無法舒適地用 R 去進行任何的工作,無法自行學習 R 的運作。故此,若然你會以上 video 所教的東西,你已經不是初學者。
但由初學者轉為中階用戶( intermediate ),才是最難的部份。
中階用戶的特點是,他能夠有效的自我學習,對 R 工作已感舒適,但仍然有點痛苦。
對中階用戶來說最難的,並不是如何進行 t test 或者 linear regression ,而是普通的數據整理( data munging / data cleansing )作業。
假設數據已經收集好,事實上一般的數據流水線( pipeline ),八成以上的時間都用於數據整理,只有兩成時間用於統計分析、繪圖。
要進行 data munging ,最少要有以下的知識:

  1. 將不同類的數據讀入 R (xls, csv, sav...)
  2. 理解一般 R 數據結構( data structure )的分別: scalar, vector, list, data frame, (次要的還有: matrix, array)
  3. 各種數據結構的操作,如 subset ( indexes )、 substitution 、 sorting 、 cbind 、 rbind 。
  4. logical, factor, numeric, character, NA, NULL 之間的分別, Logical operators
  5. function 的運作
  6. loop-function (即那些 ?apply 、 by 、 split 、 aggregate) 的運作 ((相對來說, R 的 loop constructs 如 for, while 甚至 recursion 的用途不大。))
  7. [Optional]String manipulation, regular expression
  8. [Optional]瘋狂的 data / time
  9. [Optional]DBI / SQL
  10. [Optional]Connection
  11. [Optional]Object serialization

從 r-help 或 HKRUG 的問題可見,很多人問的問題都是有關以上的東西,這可能是 R 用戶最大的樽頸位。這些問題困難的原因是初學者會覺得不知如何去問問題,到網上 google 也有困難。讀 R 內建的 documentation ,也會出現很多 computer science 才會讀到的字眼。事實上一般的人都沒有基本的 computer science 訓練。例如 lapply 的 document 有如此一句:

a vector (atomic or list) or an expression object. Other objects (including classed objects) will be coerced by base::as.list.

我當然明白這是甚麼,但一般用戶會明白 expression, classed objects, coerced 是甚麼嗎?
上次有關 HKRUG 的問題的確獲得積極回應。最少 HKRUG 的 Facebook Group 成立了。若果未來有可能在 HKRUG 搞些活動,我想分享的就是如何加強以上的十一點,打好根基。