try it this way:
a - array(NA, c(3, 5))
for(i in 1:nrow(a))
a[i, ] - c(runif(3), i, i * 10)
a
I hope it helps.
Best,
Dimitris
Dimitris Rizopoulos
Ph.D. Student
Biostatistical Centre
School of Public Health
Catholic University of Leuven
Address: Kapucijnenvoer 35, Leuven, Belgium
Tel: +32/(0)16/336899
Fax: +32/(0)16/337015
Web: http://www.med.kuleuven.be/biostat/
http://www.student.kuleuven.be/~m0390867/dimitris.htm
- Original Message -
From: Jonathan Williams
[EMAIL PROTECTED]
To: Ethz. Ch r-help@stat.math.ethz.ch
Sent: Wednesday, October 05, 2005 11:46 AM
Subject: [R] problem accumulating array within a function over loops
Dear R helpers,
I am having trouble with an array inside a loop.
I wish to accumulate the results of a function in an array within
the function, over several loops of a program outside the function.
The problem is that the array seems to re-set at every entry to the
function. Here is an example, so you can see what I mean.
#First, I declare the array and loop control variables
maxrun=3; a=array(NA, c(3,5)); run=0
# Then I define the function testf
testf=function(x,y){
print(paste('Run:',run)) #check that the function knows about run
a[run,1:3]=runif(3); a[run,4]=x; a[run,5]=y #collect numbers into
array a
print(paste(Row, run, of a:)); print(a[run,]) #check what row
'run' of
a contains
print(Whole of a:); print(a) # check what all of a contains
}
#Finally, I loop through testf maxrun occasions
for (run in 1:maxrun) testf(run,run*10)
#
Here is the output:-
[1] Run: 1
[1] Row 1 of a:
[1] 0.4637560 0.8872455 0.6421500 1.000 10.000
[1] Whole of a:
[,1] [,2][,3] [,4] [,5]
[1,] 0.4637560 0.8872455 0.642151 10
[2,]NANA NA NA NA
[3,]NANA NA NA NA
[1] Run: 2
[1] Row 2 of a:
[1] 0.4841261 0.8835118 0.9862266 2.000 20.000
[1] Whole of a:
[,1] [,2] [,3] [,4] [,5]
[1,]NANANA NA NA
[2,] 0.4841261 0.8835118 0.98622662 20
[3,]NANANA NA NA
[1] Run: 3
[1] Row 3 of a:
[1] 0.7638856 0.6667588 0.6102928 3.000 30.000
[1] Whole of a:
[,1] [,2] [,3] [,4] [,5]
[1,]NANANA NA NA
[2,]NANANA NA NA
[3,] 0.7638856 0.6667588 0.61029283 30
You can see that array a correctly collects the numbers at each
loop.
But, each successive loop loses the contents of previous loops. I am
hoping to keep the results of each successive loop in a, so that
after maxrun runs, a looks like:-
[,1] [,2][,3] [,4] [,5]
[1,] 0.4637560 0.8872455 0.64215 1 10
[2,] 0.4841261 0.8835118 0.98622662 20
[3,] 0.7638856 0.6667588 0.61029283 30
(I have made this by cutting and pasting from the above output, to
show
what I hoped testf would produce).
I am sure I must be making a simple but fundamental error. Would
someone be so kind as to show me what this is and how to correct it?
I have struggled with it for over an hour, without success!
I am running R 2.1.1 on a Windows 2000 machine.
Thanks, in advance, for your help,
Jonathan Williams
__
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide!
http://www.R-project.org/posting-guide.html
Disclaimer: http://www.kuleuven.be/cwis/email_disclaimer.htm
__
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html