[R] function runif in for loop

Duncan Murdoch murdoch.duncan at gmail.com
Wed Aug 10 18:48:41 CEST 2011


On 10/08/2011 9:40 AM, Johannes Radinger wrote:
> Jean,
>
> thank you for your answer.
> especially the line X<- numeric(length(lT)) helped me a lot.
>
> Anyway, in my case I'd like to get a "dynamic" variable or better a
> function for X. I mean if i try to call X I'd like that this drawing of random number is performed. In the case now if I call X several times I'll always get the same random numbers.

Such things do exist in R, but they aren't easy to set up.  Why not just 
make X be a function explicitly?  That is,

X <- function() runif(length(lT), lT, uT)

Then use X() to call the function where you were previously using X.

Duncan Murdoch
>
> I thought about something like:
> X<- for (i in 1:length(lT)) runif(1, lT[i], uT[i])
>
> So that I can use X as a variable for multiple runs and
> each run new random values are used.
>
> thank you
> Johannes
>
> -------- Original-Nachricht --------
> >  Datum: Wed, 10 Aug 2011 08:19:07 -0500
> >  Von: Jean V Adams<jvadams at usgs.gov>
> >  An: "Johannes Radinger"<JRadinger at gmx.at>
> >  CC: r-help at r-project.org
> >  Betreff: Re: [R] function runif in for loop
>
> >  Johannes,
> >
> >  You have the loop set up right, you just need to add indexing to refer to
> >  the looping variable, i.
> >
> >  lT<- sample(1:10)
> >  uT<- sample(21:30)
> >  X<- numeric(length(lT))
> >
> >  for (i in 1:length(lT)) X[i]<- runif(1, lT[i], uT[i])
> >
> >  X
> >
> >  Note that I changed the name of the result from T to X, because T has
> >  special meaning in R.
> >
> >  Jean
> >
> >  `·.,,><(((º>    `·.,,><(((º>    `·.,,><(((º>
> >
> >  Jean V. Adams
> >  Statistician
> >  U.S. Geological Survey
> >  Great Lakes Science Center
> >  223 East Steinfest Road
> >  Antigo, WI 54409  USA
> >
> >
> >
> >  From:
> >  "Johannes Radinger"<JRadinger at gmx.at>
> >  To:
> >  r-help at r-project.org
> >  Date:
> >  08/10/2011 07:23 AM
> >  Subject:
> >  [R] function runif in for loop
> >  Sent by:
> >  r-help-bounces at r-project.org
> >
> >
> >
> >  Hello,
> >
> >  I'd like to perform a regression using MCMCregress (MCMCpack).
> >  One variable therefore should be a function rather than a variable:
> >
> >  I want to use X as an input and X should be defined as a random number
> >  between to values. Therefore I want to use the function runif like:
> >  X<-(1, Xa, Xb) but it seems that runif doesn't allow to use vectors.
> >  So I think I've to calculate the new vector X by using a for loop.
> >
> >  I tried "for (i in 1:length(lT)) T<-runif(1,lT,uT)" but that doesn't work.
> >  What is the correct for-loop function to create this new vector/variable?
> >
> >  Can I use that function then as an input for MCMCregress?
> >
> >  thank you
> >
> >  Johannes
> >
> >  --
> >
> >  ______________________________________________
> >  R-help at r-project.org mailing list
> >  https://stat.ethz.ch/mailman/listinfo/r-help
> >  PLEASE do read the posting guide
> >  http://www.R-project.org/posting-guide.html
> >  and provide commented, minimal, self-contained, reproducible code.
> >
> >
>
> --
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.



More information about the R-help mailing list