2015-06-10 67 views
1
fname = file.choose() 
two = read.csv(fname.header=T) 

rec = two$Receipt 
del = two$Delivery 
date = two$Date 
net = rec-del 

yrec = matrix(rec,nrow=365,ncol=4,byrow=F) 
ydel = matrix(del,nrow=365,ncol=4,byrow=F) 
ynet = matrix(net,nrow=365,ncol=4,byrow=F) 
yrecsum = 0 
yrecavg = 0 

for(i in 1:4) 
{ 
    for(j in 1:365) 
    { 
     yrecsum[i] = yrecsum[i]+yrec[j,i] 
    } 
    yrecavg[i] = yrecsum[i]/365 
} 

所以我所擁有的三個矩陣的大小和整數(從1到365)在整數(從1到4)整數(從1到4)的日子相同的大小在列上。每個矩陣都填入了我正在處理的數據。我在R中的嵌套循環出了什麼問題?

我想找出所有三個矩陣的每列的平均值,我想把這些平均值放在每個矩陣的向量中。

我環顧四周,發現了一些關於動物園圖書館和時辰圖書館等信息,但我無法讓這些工作。

+0

請提供可重複的例子:http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – grrgrrbla

+1

爲什麼不跳過循環,直接使用'colMeans' ?嘗試'colMeans(yrec)' –

回答

0

這應該讓你開始(雖然我也轉換矩陣來data.frames):

#some sample data 
m <- matrix(sample(10000, 365*4),365,4) 

# get the mean of all the columns of your matrix 
colMeans(m) 

如果你有3個矩陣,你想的結果結合起來,我會做:

# some sample data: 
m1 <- matrix(sample(10000, 365*4),365,4) 
m2 <- matrix(sample(10000, 365*4),365,4) 
m3 <- matrix(sample(10000, 365*4),365,4) 

do.call("cbind", lapply(list(m1,m2,m3), colMeans)) 
1
lapply(list(yrec, ydel, ynet), colMeans) 

[[1]] 
[1] 732.9370 731.9836 705.3808 751.6986 

[[2]] 
[1] 704.7178 714.2877 735.4822 767.5123 

[[3]] 
[1] 749.1041 715.4164 711.1425 746.3370 

#Data 
yrec <- matrix(sample(365*4), ncol=4) 
ydel <- matrix(sample(365*4), ncol=4) 
ynet <- matrix(sample(365*4), ncol=4)