Hi,

You may also try:

fun1 <- function(n, repl, val1, val2) {

mat1 <- suppressWarnings(replicate(repl, log(runif(n, val1, val2))))

mat1[!is.na(mat1)][seq(n)]

}

#Jim's function

fun2 <- function(init, final, val1, val2) {

i <- init

while (i < final) {

u <- runif(1, val1, val2)

if (u >= 0) {

x[i] <- log(u)

i <- i + 1

}

}

x

}

set.seed(49)

x1 <- fun1(10,3,-1,2)

set.seed(49)

x2 <- fun2(1,11,-1,2)

identical(x1,x2)

#[1] TRUE

###Speed comparison

set.seed(58)

system.time(x1 <- fun1(1e5,100, -1,2))

# user system elapsed

# 1.392 0.105 1.500

set.seed(58)

system.time(x2 <- fun2(1,1e5+1,-1,2))

# user system elapsed

# 31.930 0.988 32.973

identical(x1,x2)

#[1] TRUE

A.K.

On Friday, May 23, 2014 4:19 AM, Jim Lemon <

[hidden email]> wrote:

On Thu, 22 May 2014 09:11:43 PM Ricardo Rocha wrote:

> Hi everybody.

>

> Consider the following exampling code:

>

> x=numeric()

> for(i in 1:10){

> u=runif(1,-1,2)

> x[i]=log(u)

> }

> This code, in each interation, generates a random value in the (-1,2)

> interval and then calculates the log of the value. When the generated

value

> is less than 0 the log produces a NaN, which gives a warning.

>

> What I want is to make it start over when a warning is produced, in

order to

> repeat it until a positive value is generated and therefore the log is

> calculated. Logically, would be like: "if there's a warning here, go back

> at the beginning and start over", without changing the iteration.

>

> Could someone help me with some directions?

>

Hi Ricardo,

Perhaps what you want is something like this:

i<-1

while(I < 11) {

u<-runif(1,-1,2)

if(u >= 0) {

x[i]<-log(u)

i<-i+1

}

}

Jim

______________________________________________

[hidden email] mailing list

https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide

http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.

______________________________________________

[hidden email] mailing list

https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide

http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.