An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20091116/b8b8a2b5/attachment-0001.pl>
Conditional statement
3 messages · Rafael Moral, jim holtman, David Winsemius
Generate the numbers, test for zero and then set negatives to zero:
set.seed(1) x <- rnorm(100,5,3) sum(x<0)
[1] 3
x[x<0] <- 0 sum(x<0)
[1] 0
On Mon, Nov 16, 2009 at 7:43 AM, Rafael Moral
<rafa_moral2004 at yahoo.com.br> wrote:
Dear useRs,
I wrote a function that simulates a stochastic model in discrete time.
The problem is that the stochastic parameters should not be negative and sometimes they happen to be.
How can I conditionate it to when it draws a negative number, it transforms into zero in that time step?
Here is the function:
stochastic_prost <- function(Fmean, Fsd, Smean, Ssd, f, s, n, time, out=FALSE, plot=TRUE) {
nt <- rep(0, time)
nt[1] <- n
for(n in 2:time) {
nt[n] <- 0.5*rnorm(1, Fmean, Fsd)*rnorm(1, Smean, Ssd)*exp(1)^(-(f+s)*nt[n-1])*nt[n-1]}
if(out==TRUE) {print(data.frame(nt))}
if(plot==TRUE) {plot(1:time, nt, type='l', main='Simulation', ylab='Population', xlab='Generations')}
}
The 2 rnorm()'s should not be negative; when negative they should turn into zero.
Thanks in advance,
Rafael
? ? ?____________________________________________________________________________________
[[elided Yahoo spam]]
? ? ? ?[[alternative HTML version deleted]]
______________________________________________ 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.
Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve?
On Nov 16, 2009, at 7:43 AM, Rafael Moral wrote:
Dear useRs,
I wrote a function that simulates a stochastic model in discrete time.
The problem is that the stochastic parameters should not be negative
and sometimes they happen to be.
How can I conditionate it to when it draws a negative number, it
transforms into zero in that time step?
Here is the function:
stochastic_prost <- function(Fmean, Fsd, Smean, Ssd, f, s, n, time,
out=FALSE, plot=TRUE) {
nt <- rep(0, time)
nt[1] <- n
for(n in 2:time) {
nt[n] <- 0.5*rnorm(1, Fmean, Fsd)*rnorm(1, Smean, Ssd)*exp(1)^(-(f
+s)*nt[n-1])*nt[n-1]}
if(out==TRUE) {print(data.frame(nt))}
if(plot==TRUE) {plot(1:time, nt, type='l', main='Simulation',
ylab='Population', xlab='Generations')}
}
The 2 rnorm()'s should not be negative; when negative they should
turn into zero.
...*max(0, rnorm(1, Fmean, Fsd)*max(0, rnorm(1, Smean, Ssd)*...
Thanks in advance,
Rafael
____________________________________________________________________________________ [[elided Yahoo spam]] [[alternative HTML version deleted]] ______________________________________________ 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.
David Winsemius, MD Heritage Laboratories West Hartford, CT