R цикл не работает, пока работает одна команда - PullRequest
0 голосов
/ 26 мая 2019

Я пытаюсь преобразовать многие объекты xts временных рядов в тиблы, и цикл for, который я написал, не работает должным образом, я не знаю почему.

Это происходит не только с этой конкретной задачей, но и с другой задачей, которую я выполняю, у меня есть список с именем «code», который содержит список имен для всех объектов xts, из которых я хочу преобразовать.

code <- c('ABT','BA','CL','ROK')

for (i in code)
  {
  i <- tk_tbl(i, preserve_index = TRUE, rename_index = "index",
       timetk_idx = FALSE, silent = FALSE)
}

Что странно, если я использую один без цикла, он прекрасно работает и преобразует xts «ABT» в тиббл «ABT»

ABT <- tk_tbl(ABT, preserve_index = TRUE, rename_index = "index",
       timetk_idx = FALSE, silent = FALSE)

Сообщение об ошибке для первого кода

Предупреждение. Нет индекса для сохранения. Объект, иначе преобразованный в тибл успешно.

38: в tk_tbl.data.frame (as.data.frame (data), preserve_index, ...:

Edit:

tk_tabl - это функция из пакета timetk, и она «Приводит объекты временных рядов к размаху».
И code - это вектор, содержащий имена.

library(timetk)
code <- c('ABT','BA','CL','ROK')


> dput(head(ROK))
structure(c(8.14062, 8.15625, 8.03125, 7.78125, 7.6875, 7.71875, 
8.25, 8.15625, 8.125, 7.90625, 7.71875, 7.75, 8.03125, 8.125, 
7.90625, 7.65625, 7.625, 7.65625, 8.1875, 8.125, 7.90625, 7.71875, 
7.65625, 7.6875, 109600, 80800, 138400, 151600, 96800, 258800, 
0.684505, 0.67928, 0.660992, 0.645316, 0.640091, 0.642704), 
class=c("xts", "zoo"), .indexCLASS = "Date", tclass = "Date", 
.indexTZ = "UTC", tzone = "UTC", src = "yahoo", 
updated = structure(1558826745.23035, class = c("POSIXct","POSIXt")), 
index = structure(c(378604800, 378950400, 379036800, 
379123200, 379209600, 379296000), tzone = "UTC", tclass = "Date"), 
.Dim = c(6L, 6L), .Dimnames = list(NULL, c("ROK.Open", "ROK.High",
"ROK.Low", "ROK.Close", "ROK.Volume", "ROK.Adjusted")))

1 Ответ

0 голосов
/ 27 мая 2019

Для меня похоже, что вы ожидаете, что <- сделает то, что делает assign .

Я думаю, вы получите ожидаемый результат, когда измените цикл на:

for (i in code) {
  assign(i, tk_tbl(i, preserve_index = TRUE, rename_index = "index", timetk_idx = FALSE, silent = FALSE))
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...