我是R的新手。
我正在尝试从样本中创建具有不同频率的时间序列矩阵。更具体地说,我有一个从1870年到2014年的月度价格矩阵,我想从中创建新的矩阵,频率从1个月到120个月不等。对于每个价格频率,我需要R来存储一个单独的对象,然后可以在函数外部使用。原始样本有1730行(价格观察)和8列(变量)。
到目前为止,我已经想出了这个。该函数以看似正确的频率打印所有矩阵,但是我不知道如何将矩阵保存在单个对象中。
asset_prices<-monthly historical prices
prices.rep <- function(x) {
i <- 1
repeat {
prices<-x[seq(1, 1730,i),1:8]
print(prices)
i <- i+1
if(i > 120)
break
}
return(prices)
}
results.rep<-prices.rep(asset_prices)
results.rep #only returns the last iteration of the function
非常感谢帮助。 提前谢谢
答案 0 :(得分:0)
考虑一下:
prices.rep <- function(x) {
prices <- list()
for(i in 1:12) {
prices[[i]] <- x[seq(1, 1730, i), 1:8]
#print(prices)
}
return(prices)
}
这将返回一个矩阵列表(假设你的x
参数是一个矩阵)。
您还可以使用lapply
:
prices.rep <- function(x)
lapply(1:12, function(i) x[seq(1, 1730, i), 1:8] )