為什麼我們看不懂別人寫的 R 程式?

外界在提到 R 軟體時,在褒獎之餘,總是人云亦云地會順便提到「R 軟體的學習曲線頗陡峭」。我思考了幾個可能原因,想到以前我在學 Perl 程式語言的經驗。當時我買了好幾本 Perl 的書,但後來放棄的原因,是我看到網路上有經驗的人寫的 Perl 程式時,經常會在書上找不到他們用的特殊奇怪語法,這讓我非常氣餒。

關於「R 很難學」的迷思,可能的原因之一,或許就是這種「初學者看不懂程式」的挫折使然。所以這裡我列出一些 R 軟體有別於其他程式語言的常見特殊寫法,或許能幫忙一些初學者度過第一關。

(繼續閱讀…)


 

gunrock 圖結構(graph) GPU 函數庫在 Debian Linux 上的安裝

gunrock 是一套可用 GPU 平行運算的圖(Graph)結構 C++ 函數庫。這裡的 Graph 不是指「畫圖」,而是許多端點(Vertex)跟連結線(Edge)所形成的類似腦神經連結的幾何結構體。

Graph(圖)結構可以用來分析各式複雜的現象, 例如社群網路使用者彼此之間的關係與小群體是否相似,也可以模擬人類腦神經之間的結構,DNA 結構的相似性等等,應用非常廣泛。

(繼續閱讀…)


 

Debian Linux (Wheezy) R-3.4.0 kmcudaR 套件安裝錯誤之修改

今天看到 R 軟體一個新套件 kmcudaR,裡面有新的 kmean 跟 knn 函數,宣稱可以使用 GPU,並且採用新的「Yinyang K-Means」(陰陽 K-Means?) 演算法,速度比傳統的 K-Means 集群法還快 1.6 倍到 2 倍,目前只有 Linux 跟 Mac 版本。

所以我就在我 Linux 機器上用 R 的 install.packages 方法嘗試安裝,結果出現 compile 錯誤。這裡把我自己修正該套件原始碼錯誤的步驟紀錄一下。
(繼續閱讀…)


 

R 軟體 cvDetect 套件: R 與 OpenCV 臉部偵測的示範

由於在網路上搜尋了半天都找不到 R 軟體與 OpenCV 臉部偵測功能結合的套件,我測試了幾天,終於把 OpenCV 最引人注意的臉部偵測、手部(手掌)偵測、以及手指偵測三個部分,藉由 Rcpp 的修改,包裝成一個示範用的套件 cvDetect.

由於 OpenCV 是一套很大的 C++ 影像偵測函數庫,再加上我的 C++ 語言能力只是剛好入門而已,所以這個套件的目的只是當做一個 demo 功能。藉由原始碼的公開,或許能讓更多愛好 R 軟體的朋友們參考之後,可以再擴充、修改。
(繼續閱讀…)


 

在 Windows 上修改與安裝 ropencv 簡易測試套件

Github 上的 ropencv 是一個意圖建立 R 軟體與 OpenCV C++ 影像處理與偵測函數庫介接連結的測試套件,目前只提供一個簡單的 showImage 函數,原始碼裡面也沒有提供 Windows 的安裝資料。但是以後想要整合 R 軟體與 OpenCV 的人,可以從 ropencv 的原始碼得到很多的啟示。

我參考 Rvision 套件中的 Windows 編譯設定,嘗試修改了 ropencv,利用 ROpenCVLite 協助安裝好的 Windows 版 OpenCV,已經可以在 Windows 上順利編譯並安裝測試 ropencv。
(繼續閱讀…)


 

Rvision OpenCV 套件介紹: 擷取並顯示 Webcam 影像

Rvision 是串接 R 與 OpenCV 影像處理/辨識 library 的套件,目前提供的函數比較基本,還未加入影像辨識(如人臉) 的功能,可能得等作者改版

這裡介紹簡單的動作:用 Rvision 直接擷取 Webcam 影像,並在 R 播放出來。由於 R 目前尚缺 Video Player 套件,這裡的「播放」是以比較簡單的plot 函數方式處理。
(繼續閱讀…)