R 的 Vectorization
程式人員一般剛使用 R 時有點不習慣吧! 因為寫程式就是在處理一些需要反覆的事情或經過許多反覆動作後才能解決的問題。所以,程式中幾乎都會需要用到迴圈。
R 這種統計語言,而統計一定需要一些數據。所以概念上一定以一次處理一堆數據來設計。這一堆數據數學上的基礎概念就是向量( vector)。 序列也許你也可以如此,但這種概念順序感就有點強了。
R 將一堆數據看作是一個點或個體來操作,這很有趣。在 20 幾年前我在使用 S 語言時,就有覺得這種處理對數據研究而言是很有益的,我的論文就是利用 S-PLUS 來完成的。
R 的是一種 vectorization 是對其他語言說的,例如: 當你要將 1 到 100000 中,每個數的平方進行加總時,一般語言就是用:
x <- 1:100000
s <- 0
for( i in x) {
s = s+ i^2
}
R 就是將 x 視作"點"來進行處理,例如:
x <- 1:100000
s <- sum(x^2)
我覺得這種看法很酷。另外,如果想將一堆數據分割後再當成點來處理,R 也提供你一組 apply 函式來處理這樣的事情。
在 R 語言中,請盡量"自然"的用 vector 來思考。
留言
張貼留言