【发布时间】:2020-06-04 05:22:35
【问题描述】:
这是我使用的代码:
library(quantmod)
library(timetk)
library(dplyr)
library(tibble)
library(tidyr)
mdate <- "2015-10-30"
edate <- "2016-01-07"
tickers4 <- c("RTL","RTM")
data <- do.call("cbind", lapply(seq_along(tickers4), function(i){
try_var <- try(getSymbols(tickers4[i], from = mdate, to = edate, auto.assign = FALSE))
if(inherits(try_var, "try-error")) {
i <- i + 1
} else{
getSymbols(tickers4[i], from = mdate, to = edate, auto.assign = FALSE)
}
}
)
)
# Transpose data.frame: td_data => data.frame
td_data <- within(data.frame(price_var = row.names(t(data)), t(data), row.names = NULL),
{
ticker_cd <- as.factor(gsub("[.].*", "", price_var))
price_var <- as.factor(gsub(".*[.]", "", price_var))
}
)
# Re-order vectors; keep complete cases: td_data_o => data.frame
td_data_o <- td_data[complete.cases(td_data),
c(names(td_data)[sapply(td_data, is.factor)],
names(td_data)[sapply(td_data, function(x){!is.factor(x)})])]
# Reshape: abc => data.frame
abc4 <- do.call("cbind", split(td_data_o, td_data_o$price_var))
当我运行这些代码时,abc4 必须有 288 个变量,但会创建 336 个变量。 第 289 和第 290 的值为“X2”。从第 300 个开始,所有其他值都是“2”。 我发现它是由ticker4中的“RTL”引起的。 mdate 和 edate 之间不存在此代码的值。 导入股票数据时如何跳过不存在的代码?
【问题讨论】: