2015-06-10 6 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) по столбцам. Каждая матрица заполняется данными, с которыми я работаю.Что случилось с моим вложенным циклом в 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)