您好,我已经编写了一个代码,可以从Fred获取财务数据。它应该获取所有数据并将数据放入空矩阵中。
这看起来比我想象的要困难得多。例如:
tickers = c("AAA", "BAA", "TB3MS")
###HÄMTAR DATA###
library(quantmod)
var = noquote(tickers)
getSymbols(tickers, src = "FRED")
#kontrollera längderna och skapa en vector med längderna
vector = c()
for (v in 1:length(var)) {
vector[v] = length(get(var[v]))
}
minsta = min(vector)
längsta = max(vector)
emptym = matrix( nrow = längsta, ncol = length(tickers)+1)
for (i in 1:length(var)) {
emptym[,i] = get(var[i])
}
但由于TB3MS比其他两组短,我得到一个错误。
"number of items to replace is not a multiple of replacement length"
我想弄清楚如何解决这个问题?在for循环中创建一个for循环?
我也试过这个:
cbind.fill <- function(...){
nm = list(...)
nm = lapply(nm, as.matrix)
n = max(sapply(nm, nrow))
do.call(cbind, lapply(nm, function (x)
rbind(x, matrix(, n-nrow(x), ncol(x)))))
}
但是这个在结尾处给出了NA,我从头开始需要NA,然后用数据填充它。
发布于 2019-05-22 14:30:01
您可以先将数据收集到列表中:
A = list();
A[[1]] = c(1,2);
A[[2]] = c(3,4,5);
然后将列表转换为向量:
B = unlist(A)
之后。将向量转换为矩阵:
Row = 3; Col = 4;
B[(length(B)+1) : (Row*Col)] = NA;
C = matrix(B, nrow = Row, ncol = Col)
(注意,我在向量的末尾添加了“NA”,直到矩阵的维度变为真)
https://stackoverflow.com/questions/-100005179
复制相似问题