2014-07-03 56 views
1

我在我的工作區中有很多大的xts對象,我試圖通過使用cbindmerge,apply甚至在一個循環中進行組合。目前,xts數據是刻度數據,並且由於其長度而無法將其粘貼到此處。然而,我所要做的是:cbind或通過粘貼名稱合併?

cbind(AAPL.O, AMZN.O, BIDU.O, GLD.A, ...) -> all 

通過使用cbind

stock1 <- c("AAPL.O", "AMZN.O", "BIDU.O", "GLD.A", ...) # names of xts objects 

# However this only combines the names "AAPL.O" & "AMZN.O" 
cbind(paste(stock1[1]), paste(stock1[2])) 

我也曾嘗試apply以下名稱粘貼:

apply(t(stock1), 2, cbind) 

,但它只是結合了名稱如stock1。我一直在使用也嘗試:

merge(SPY.A, source [stock1]) 

但出現以下錯誤: Error in source[stock1] : object of type 'closure' is not subsettable

既然不能把所有的蜱數據在這裏,我將使用網上getSymbols()

提供一些代碼來下載數據
library(quantmod) 

symbols <- c("AAPL", "AMZN", "BIDU", "GLD") 

getSymbols(symbols) 

#These will yield the same problem I am having 
cbind(paste(symbols[1]),paste(symbols[2])) 

apply(t(symbols), 2, cbind) 

merge(AAPL, source [symbols]) 

回答

1

可能的mgetdo.call組合會爲你工作,但很難說沒有一些樣品的輸入和預期的輸出。

一個例子:

## Some matrices to combine using `cbind` 
M1 <- matrix(1:4, ncol = 2) 
M2 <- matrix(5:8, ncol = 2) 
M3 <- matrix(9:10, ncol = 1) 

## Like your "stock1" 
Get <- c("M1", "M2", "M3") 

do.call(cbind, mget(Get)) 
#  [,1] [,2] [,3] [,4] [,5] 
# [1,] 1 3 5 7 9 
# [2,] 2 4 6 8 10 
+0

這正是我一直在尋找。我以前從未使用過'mget'。謝謝! – Rime

+0

@雨,很高興聽到它。我發現你已經用一個可重複的例子更新了你的問題,所以在這裏努力+1 :-) – A5C1D2H2I1M1N2O1R2T1