R 中的 type 與 class 有何不同? quote 與 substitute 是有何用處?


=======================================================================

R 中的 type 與 class 有何不同?
class 是由 OOP 的觀點出發,對於物件所屬的"類型"所產生出來的;
而 type 是 R 內部的角度對物件類型的辨別。

class 是R物件的屬性,無論物件本身底層如何的被儲存,class 可以任意的被指定;
而 type 呢? 它決定了物件底層如何的被儲存。
所以,class 是表示物件的邏輯特性而 type 則描述了實體的特性。

========================================================================

R 中的 quote 與 substitute 是有何用處?
quote 與 substitute 函式是在對 R 語言本身進行運算時用到。
假設有一 R expression E,
 E_callable <- quote(E)
上述  quote 會阻止 R 直接執行 expression E,而取而代之的是傳回一 callable 物件 E_callable。此 E_callable 可以傳入 eval 函式指定其執行的 environment/list 與 enclosing。

 eval(E_callable, enviro, enclosure) 根據下述方式執行 E_callable 物件:

首先,如果傳入的 enviro 為 environment,就在此 environment 或它的父 environment、...查照所有在 E_callable 中所有的符號來執行 E_callable。

如果傳入的 enviro 為 list,就在此 list 查照所有在 E_callable 中所有的符號來執行 E_callable。如果有符號沒在 list 上,則轉到 enclosure environment 及其上所有父 environment 中找尋。

如果沒有找到,則丟出錯誤訊息。

而 substitute 會將 expression 轉成 lexical 的 parsing tree 同時可以取在在 parsing tree 中的符號。

例如:
> (E_pt<- substitute(a + b, list(a = 1)))
1 + b
>eval(E_pt,list(b=2))
3

上述兩函式都是為了可以控制使 expression E 在它有意義的環境下執行。
=======================================================================

Performance improvement --
The following save my program about 10 min. while forecasting 1810*k items. (k~= 4)
1. delete redundant statement in the contruct_date_index function
2. keep the insert and update statements of database to execute batchly until the end of the program




留言

這個網誌中的熱門文章

標準差與 Wald 統計量

可能性比檢定(Likelihood ratio test)

Wold Decomposition Theorem