如何在矩阵的R中进行循环

时间:2015-04-22 08:12:14

标签: r

我有一个“n”列和“k”行的矩阵(名为x)。我想做一个循环,但我不知道如何。

fit1=hw(x[,1],h=12)
fit2=hw(x[,2],h=12)
fit3=hw(x[,3],h=12)
fit4=hw(x[,4],h=12)
fit5=hw(x[,5],h=12)
.

.
.
fitn=hw(x[,n],h=12)

问题是,如果我没有为此循环,我将无法继续。更具体地说,我在一个项目中,我必须预测矩阵的数据。通过一些测试,我得出结论,我的数据的最佳方法是HoltsWinter。如果a只有一列,这很容易。

x<-read.table()
xx<-ts(x,start=,frequency=)
fit<-hw(xx,h=12,model="additive") or fit<-hw(xx,h=12,model="multiplicative")
fit$mean
and in final step a plot.

但在我的情况下,我没有一栏......但我有很多......所以不可能同时思考n次。我相信存在一个可以帮助我解决问题的循环。

2 个答案:

答案 0 :(得分:2)

你应该调查apply家庭。一些例子: lapply()用于计算每个系列(列)的平均值:

x <- data.frame( a =rnorm(100), b=rnorm(100), c=rnorm(100))
xx <- ts(x, start=2000, frequency=4)
lapply(x, mean)
$a
[1] 0.03697344

$b
[1] -0.1540831

$c
[1] -0.2267992

sapplyHoltWinters()中的stats一起使用{/ 1}}:

sapply(names(x), function(i,...) HoltWinters(xx[,i],...),  seasonal = "additive" )
             a           b           c          
fitted       Numeric,384 Numeric,384 Numeric,384
x            Numeric,100 Numeric,100 Numeric,100
alpha        0.1388421   0.1657252   0.06299144 
beta         0.08518182  0.1902871   0.2389817  
gamma        0.1799012   0.2454659   0.1603644  
coefficients Numeric,6   Numeric,6   Numeric,6  
seasonal     "additive"  "additive"  "additive" 
SSE          112.2228    137.912     135.6189   
call         Expression  Expression  Expression 

答案 1 :(得分:0)

fit=list()
for (i in 1:ncol(x)) {

fit[[i]]=hw(x[,i],h=12)

}