2015-09-28 77 views
0

我陷入了R編程的問題。 我的目標是從瑞士市場指數中隨機選擇2只股票,其中包含30只股票。R編程隨機選股

直到現在我解決了2股用下面的代碼中隨機挑選:

SMI_components <- cbind("ABB (ABBN.VX)", "ADECCO (ADEN.VX)", "ACTELION (ATLN.VX)", "JULIUS BAER GRP (BAER.VX)", "RICHEMONT (CFR.VX)", "CREDIT SUISSE (CSGN.VX)", "GEBERIT (GEBN.VX)", "GIVAUDAN (GIVN.VX)", "HOLCIM (HOLN.VX)", "NESTLE (NESN.VX)", "NOVARTIS (NOVN.VX)", "TRANSOCEAN (RIGN.VX)", "ROCHE HOLDING (ROG.VX)", "SWISSCOM (SCMN.VX)", "SGS (SGSN.VX)", "SWISS RE (SREN.VX)", "SYNGENTA (SYNN.VX)", "UBS (UBSG.VX)", "SWATCH GROUP (UHR.VX)", "ZURICH INSURANCE GROUP (ZURN.VX)") 

for(i in 1:1){ 
print(sample(SMI_components, 2)) 
} 

如何繼續我的代碼,如果我想從這兩個隨手拈股票下載歷史數據? 例如,隨機選擇是:

「諾華(NOVN.VX)」 和 「蘇黎世金融服務集團(ZURN.VX)」

如何繼續說......

SMI_NOVARTIS <- yahooSeries ("NOVN.VX", from = "2005-01-01", to = "2015-07-30", frequency = "daily") 

SMI_ZURICH <- yahooSeries ("ZURN.VX", from = "2005-01-01", to = "2015-07-30", frequency = "daily") 

我真的很感謝你的幫助 Regards

+0

'爲(我在1:1)'什麼也沒做...... –

回答

1

print輸出到控制檯,但不存儲任何東西。因此,首先要做的是將sample的輸出分配到一個變量中。括號之間

my_picks <- sample(SMI_components, 2) 

提取股票代碼(禮貌下面的評論):

my_picks <- sub(".*\\((.*)\\).*", "\\1", my_picks) 

然後你可以使用lapply,呼籲每個值的函數(yahooSeries)在my_picks

series_list <- lapply(my_picks, yahooSeries, from = "2005-01-01", to = "2015-07-30", frequency = "daily") 

然後你會得到一個列表中的輸出。 series_list[[1]]將有yahooSeries的第二

最後輸出爲my_picks的第一個值,而series_list[[2]],不知道你爲什麼跟單迭代循環打擾,但你並不需要一個

+1

我懷疑這個例子會起作用。 'my_picks'具有全名和股票代碼。該功能僅使用符號。您應該從每個選擇中提取符號。 –

+0

是的,在OP中沒有注意到;編輯 – arvi1000

+0

嘗試:'sub(「。* \\((。*)\\)。*」,「\\ 1」,my_picks)' –