Какво не е наред с моя вложен for цикъл в R?

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) в колоните. Всяка матрица е попълнена с данните, с които работя.

Опитвам се да намеря средната стойност на всяка колона за всичките три матрици и бих искал да поставя тези средни стойности във вектор за всяка матрица.

Огледах се и намерих информация за библиотеката на зоологическата градина и библиотеката на хрон и подобни, но не мога да ги накарам да работят.


person Andy Kim    schedule 10.06.2015    source източник
comment
моля, предоставете възпроизводим пример: stackoverflow.com/questions/5963269/   -  person grrgrrbla    schedule 10.06.2015
comment
Защо не пропуснете циклите и просто използвате colMeans? Опитайте colMeans(yrec)   -  person IRTFM    schedule 10.06.2015


Отговори (1)


това трябва да ви помогне да започнете (въпреки че бих конвертирал матриците в 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))
person grrgrrbla    schedule 10.06.2015