一個 R 的技巧
一般來說,我們在寫 R 的函數的時候都是用以下方法
test = function(....)
但有一種函數的撰寫方式與上述方法不同,就是用 "%" 包夾某些字元的定義方法
舉個例子,假設矩陣 A 與 B 要做矩陣乘法,我們會用
A %*% B
(類似的函數還有 %%, %/% 等)
%*% 明顯就是一種函數,其方法是對 %*% 的"前面"與"後面"去做某種運算
但該怎麼寫呢?
當然不難,要寫這種函數的方法就是
"%any%" = function(x,y) ........
上面這個例子裡面,我們定義了一種函數 %any% ,讓我們每當下指令
a %any% b
的時候,其實就去做 function(a,b) .... 的程式計算。
這種函數的寫法可以補足 R 的一些缺陷
比方說我們都知道 R 的矩陣無法做次方運算
(e.g. A^3 出來的是每個元素的三次方,而非矩陣乘法的三次方)
但我們可以寫這樣一個函數
"%^%" = function(x,y)
{ if(y>=2) { temp=x ; for(i in 1:(y-1)) x = x%*%temp } ; x }
如此一來,我們就有矩陣乘冪這樣的運算子可以運用,最重要的是,它親切多了
--
※ 發信站: 批踢踢實業坊(ptt.cc)
推
11/20 08:39, , 1F
11/20 08:39, 1F
※ 編輯: bugle 來自: 218.167.179.242 (11/20 08:44)