當我運行getSymbols
時,它產生了一個警告,我沒有完全理解(我也不知道該特定函數應該做什麼),但我認爲它與您的問題的核心沒有關係。
兩個選項...
選項1
eval(parse(text = x))
將評估作爲一種表達人物x
。也就是說,它等同於用運行時的任何值x
替換該位代碼。
library("quantmod")
sym <- "SPY"
getSymbols(sym, from = '1990-01-01')
q1 <- summary(Ad(SPY)[endpoints(SPY, on = 'months')])
xts_obj <- eval(parse(text = sym))
q2 <- summary(Ad(xts_obj)[endpoints(xts_obj, on = 'months')])
print(all(q1==q2))
選項2
這是清潔,但只適用的,因爲getSymbols
默認功能可以通過auto.assign
參數覆蓋。如果函數總是讓一個<<-
風格分配,那麼你可以做的最好的就是創建一個包裝函數
library("quantmod")
sym <- "SPY"
getSymbols(sym, from = '1990-01-01', auto.assign = T)
q1 <- summary(Ad(SPY)[endpoints(SPY, on = 'months')])
q2 <- getSymbols(sym, from = '1990-01-01', auto.assign = F)
print(all(q1==q2))