重命名對象,並在所述colnames是一個兩個步驟的過程:
SPY <- GSPC# assign the object to the new name (creates a copy)
colnames(SPY) <- gsub("GSPC", "SPY", colnames(SPY)) # rename the column names
否則,getSymbols功能可以不自動分配,在這種情況下,你可能會跳過第一步(你仍然需要重新命名列)。
SPY <- getSymbols("^GSPC", auto.assign=FALSE)
從@backlin
ř採用所謂惰性計算評論。其效果是,當你「複製」SPY <- GSPC
時,你實際上並沒有在內存中爲SPY
分配新的空間。 R知道這些對象是相同的,並且如果其中一個被修改(,即不再相同時,,例如,當你改變下一行中的列名稱時),僅在存儲器中產生新的副本。所以做
SPY <- GSPC
rm(GSPC)
colnames(SPY) <- gsub("GSPC", "SPY", colnames(SPY))
你從來沒有真正複製GSPC
而只是給它一個新的名字(SPY
),然後讓R忘記名字(GSPC
)。當您更改列名時,您不需要創建SPY
的新副本,因爲GSPC
不再存在,這意味着您已真正重命名對象而不創建中間副本。
gsub()函數完美適用於我的目的。再次感謝Shane。 – Milktrader 2010-04-27 00:26:57
這使我困惑了一段時間,所以我想在懶惰評估中加入這個部分,以便爲其他人澄清。我有記憶和時間分析了這個例子,以驗證這實際上是R內發生的事情。 – Backlin 2012-12-17 10:03:37
感謝關於懶惰評估的筆記! – 2013-02-14 21:03:54