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
留言
張貼留言