Создание массива с использованием цикла for - PullRequest
0 голосов
/ 07 декабря 2018

Я хочу создать массив данных о ценах определенных акций.

Сначала я выбрал свою корзину акций, используя:

tickers <- c("^GSPC","MSFT","INTC","NVDA","AAPL")

Затем я загрузил данные о ценах, используяФункция цикла for:

for (i in 1:length(tickers)) {
  getSymbols(tickers[i],
             from = as.Date("2006-01-01"), to = as.Date("2009-12-31"))
}

Теперь я хочу добавить все данные о запасах в массив, поэтому я попробовал что-то вроде этого:

s <- list()
for (i in 1:length(tickers)) {
  getSymbols(tickers[i],
             from = as.Date("2006-01-01"), to = as.Date("2009-12-31")) %>%
             {. ->> s[[i]]}
}

Но вывод, похоже, дает толькомне список названий акций:

[[1]] [1] "GSPC"

[[2]] [1] "MSFT"

[[3]] [1] «INTC»

[[4]] [1] «NVDA»

[[5]] [1] «AAPL»

Что-то не так с кодом, который я дал после функции pipe?

1 Ответ

0 голосов
/ 07 декабря 2018

Просто используйте lapply для создания объекта списка и убедитесь, что для параметра auto.assign установлено значение ЛОЖЬ.

library(quantmod)

tickers <- c("^GSPC","MSFT","INTC","NVDA","AAPL")

# Get the ticker data
s <- lapply(tickers, getSymbols, from = as.Date("2006-01-01"), to = as.Date("2009-12-31"), auto.assign = FALSE)

# name the list objects
names(s) <- tickers

str(s)
List of 5
 $ ^GSPC:An ‘xts’ object on 2006-01-03/2009-12-30 containing:
  Data: num [1:1006, 1:6] 1248 1269 1273 1273 1285 ...
 - attr(*, "dimnames")=List of 2
  ..$ : NULL
  ..$ : chr [1:6] "GSPC.Open" "GSPC.High" "GSPC.Low" "GSPC.Close" ...
  Indexed by objects of class: [Date] TZ: UTC
  xts Attributes:  
List of 2
  ..$ src    : chr "yahoo"
  ..$ updated: POSIXct[1:1], format: "2018-12-07 15:01:48"
 $ MSFT :An ‘xts’ object on 2006-01-03/2009-12-30 containing:
.....
...