4

次のコードがあります。

library(quantmod)
tckrs <- c("TLT", "LQD", "HYG", "SPY", "DBC")
NumTckrs  <-  length(tckrs)
getSymbols(tckrs, from="1900-01-01", to=Sys.Date())

# merge to allign the start dates
MainDF <- merge(Ad(TLT), Ad(LQD), Ad(HYG), Ad(SPY), Ad(DBC), all=FALSE)

最後の行で銘柄記号を繰り返す必要がないようにしたいと思います。これを行う方法を知っている人はいますか?

4

3 に答える 3

5

すべてのデータを環境にロードし、それぞれを呼び出しAdてマージします。またgetSymbols、デフォルトで xts オブジェクトを返すことに注意してください。したがって、あなたMainDFは data.frame ではなく xts オブジェクトです。

library(quantmod)
# create new environment
myEnv <- new.env()
# pull all data and load into myEnv
getSymbols("TLT;LQD;HYG;SPY;DBC", env=myEnv)
# eapply calls Ad on each symbol in myEnv and returns a list
# do.call calls merge with each element returned from eapply as an argument
MainXTS <- do.call(merge, c(eapply(myEnv, Ad),all=FALSE))
于 2012-06-24T16:55:26.997 に答える
3

これは私のqmaoパッケージの 1 行のコードです

library(qmao)
p <- makePriceFrame(tckrs, prefer='Adjusted', silent=TRUE)

便宜上、PFは のエイリアスですmakePriceFrame。また、デフォルトでは、関数は「Adjusted」列があればそれを見つけて使用するため、prefer引数を省略できます。

p <- PF(tckrs)

これらのタイプの関数の束を組み合わせることもできます

library(FinancialInstrument)
p <- PF(getSymbols(stock(tckrs, currency("USD"))))

また、シンボル名を に割り当てていない場合はtckrs、PriceFrame から取得できることに注意してください。

names(p)
[1] "TLT" "LQD" "HYG" "SPY" "DBC"

引数を指定しない場合prefer、「Adjusted」、「Close」、「Mid」、「Price」を含む列が検索されます。PriceFrame の作成に使用された列を確認するには、「prefer」を参照してください。属性

attr(p, "prefer")
[1] "Adjusted"

別の環境にデータを保管している場合は、PFそれも処理できます。

getSymbols(tckrs, env=myEnv)
p <- PF(ls(myEnv), env=myEnv)
于 2012-06-24T19:59:39.477 に答える
2

Joshua'sはおそらく私のものよりもエレガントです:

res <- do.call( merge,  lapply(  lapply(tckrs, get) , Ad) )
于 2012-06-24T17:06:15.233 に答える