2017-08-22 1 views
0

私は完全な初心者です。これは課題であり、目標は2012年から今日までこれらの各株式について毎日の株価収益率を引き出すFor Loopを作成することです。Forループを使用して日々の在庫を返すためにRとクオンタムパッケージを使用

Forループを作成する方法が分かりません。その年を引くだけで、毎年の返品を得ることができます。私は1つを作成しようとしましたが、毎年コードを繰り返すだけで動作させることができました。

以下のコードは、私がそれらの年を引っ張るために始めたものですが、その後は毎年繰り返します。私のプロセスは完全に冗長で非効率的だったようです。

MSFT =マイクロソフト

GOOG =グーグル

AAPL =されたApple Inc.

FB = Facebookの株式会社

X =米国鉄鋼(株)

SBUX =スターバックスInc.

TGT = Target Stores Inc.

DNKN =ダンキンドーナツ

library(quantmod) 
setwd("C:/TEMP") 

マイクロソフト

MSFT1 <- getSymbols("MSFT", auto.assign = FALSE) 

MFSFT2012 <- MSFT1$MSFT.Close['2012'] 
MFSFT2012 

グーグル

GOOG1 <- getSymbols("GOOG", auto.assign = FALSE) 
GOOG2012 <- GOOG1$GOOG.Close['2012'] 
GOOG2012 

APPLE

AAPL1 <- getSymbols("AAPL", auto.assign = FALSE) 
AAPL2012 <- AAPL1$AAPL.Close['2012'] 
AAPL2012 

F

FB1 <- getSymbols("FB", auto.assign = FALSE) 
FB2012 <- FB1$FB.Close['2012'] 
FB2012 

USスチール

XSTEEL1 <- getSymbols("X", auto.assign = FALSE) 
XSTEEL12012 <- XSTEEL1$X.Close['2012'] 
XSTEEL12012 

スターバックス

SBUX1 <- getSymbols("SBUX", auto.assign = FALSE) 
SBUX12012 <- SBUX1$SBUX.Close['2012'] 
SBUX12012 

ターゲット

TGT1 <- getSymbols("TGT", auto.assign = FALSE) 
TGT12012 <- TGT1$TGT.Close['2012'] 
TGT12012 

ダンキンドーナツ

をacebook
+0

これを行うにはforループは必要ありません。 – AK88

答えて

2

私はこの解決策を提案できますが、実際にはforループは必要ありません。

私はあなたがいくつかの行のすべての株式に直接行くためのサイクルのためにしたい場合はあなたの結果はあなたが、しかしこの

head(MFSFT) 
       MSFT.Close 
2012-01-03  26.77 
2012-01-04  27.40 
2012-01-05  27.68 
2012-01-06  28.11 
2012-01-09  27.74 
2012-01-10  27.84 

のように見えますマイクロソフト例として

#zoo and xts are need to allows quantmod library to work (I got an error message from R... 
library(zoo) 
library(xts) 
library(quantmod) 

MFSFT <- NULL 
    for(i in 2012:2017){ 
     MSFT1 <- getSymbols("MSFT", auto.assign = FALSE) 
     MFSFT2012 <- MSFT1$MSFT.Close[as.character(i),] 
     MFSFT <- rbind(MFSFT, MFSFT2012) 
    } 

を取りましたこのようにすることができます

Stocks <- c("MSFT", "GOOG", "AAPL", "FB", "X", "SBUX", "TGT", "DNKN") 
Daily_Stock <- NULL 
for(i in Stocks){ 
    df1 <- getSymbols(i, auto.assign = FALSE) 
    Close <- df1[as.character(2012:2017),4] 
    Daily_Stock <- cbind(Daily_Stock, Close) 
} 

あなたは私はこのようなものを手に入れます。

head(Daily_Stock) 

       MSFT.Close GOOG.Close AAPL.Close FB.Close X.Close SBUX.Close TGT.Close DNKN.Close 
2012-01-03  26.77 331.4626 58.74714  NA 28.17  22.645  51.12  24.74 
2012-01-04  27.40 332.8922 59.06286  NA 28.44  23.085  50.00  24.73 
2012-01-05  27.68 328.2745 59.71857  NA 27.79  23.180  48.51  25.17 
2012-01-06  28.11 323.7963 60.34286  NA 27.30  23.360  48.95  25.47 
2012-01-09  27.74 310.0678 60.24714  NA 26.78  23.295  48.57  25.21 
2012-01-10  27.84 310.4065 60.46286  NA 27.29  23.410  48.79  25.42 
関連する問題