Rのforループ内のイテレータを変更することはできません。したがって、forループの最後のx = x + 1
は不要で無視されます。また、forループで自動印刷が無効になっているので、明示的にprint
を呼び出す必要があります。あなたができるもう一つのことは、ベクトルを直接反復することです(サブセットする必要はありません)。したがって、forループは次のようになります。
for(y in year) {
print(viewFin(GE.f, type="IS", period="A")["Net Income", y])
}
つまり、forループは不要です。サブセットを直接使用して同じ結果を得ることができます。
netIncome <- viewFin(GE.f, type="IS", period="A")["Net Income",]
列と行などの記号とdata.frame、およびラインアイテムと日付をすることが問題となり得る理由はありませんので、各シンボルはデータの年の同じ数、またはまったく同じを持っている必要があります広告申込情報あなたが作業しているものが分かるまで、すべてのデータを最初に長い形式にする方がいいでしょう。ここでは、複数のシンボルに対してこれを行う関数があります。
stackFinancials <-
function(symbols, type = c("BS", "IS", "CF"), period = c("A", "Q")) {
type <- match.arg(toupper(type[1]), c("BS", "IS", "CF"))
period <- match.arg(toupper(period[1]), c("A", "Q"))
getOne <- function(symbol, type, period) {
gf <- getFinancials(symbol, auto.assign = FALSE)
vf <- viewFinancials(gf, type = type, period = period)
df <- data.frame(vf, line.item = rownames(vf), type = type, period = period,
symbol = symbol, stringsAsFactors = FALSE, check.names = FALSE)
long <- reshape(df, direction="long", varying=seq(ncol(vf)), v.names="value",
idvar="line.item", times=colnames(vf))
rownames(long) <- NULL
long
}
# combine all into one data.frame
do.call(rbind, lapply(symbols, getOne, type = type, period = period))
}
そして、ここでそれを使用しての例です:
R> Data <- stackFinancials(c("GE", "AAPL"), type = "IS", period = "A")
Annual Income Statement for GE
Annual Income Statement for AAPL
R> head(Data)
line.item type period symbol time value
1 Revenue IS A GE 2016-12-31 123693
2 Other Revenue, Total IS A GE 2016-12-31 NA
3 Total Revenue IS A GE 2016-12-31 123693
4 Cost of Revenue, Total IS A GE 2016-12-31 92508
5 Gross Profit IS A GE 2016-12-31 31185
6 Selling/General/Admin. Expenses, Total IS A GE 2016-12-31 18377
R> tail(Data)
line.item type period symbol time value
387 Effect of Special Items on Income Taxes IS A AAPL 2013-09-28 NA
388 Income Taxes Ex. Impact of Special Items IS A AAPL 2013-09-28 NA
389 Normalized Income After Taxes IS A AAPL 2013-09-28 NA
390 Normalized Income Avail to Common IS A AAPL 2013-09-28 NA
391 Basic Normalized EPS IS A AAPL 2013-09-28 NA
392 Diluted Normalized EPS IS A AAPL 2013-09-28 5.68
ありがとうございました!素晴らしいコード! – Cads