[R] if value is in vector, perform this function

Patrick Burns pburns at pburns.seanet.com
Sun Mar 3 09:58:37 CET 2013


I think the command you want is:

if(t %in% feed_days) C_A <- 1.5 else C_A <- 0

Do not confuse `%in%` (which is essentially
"are the left-hand values in the right-hand
vector)

with

"in" of the `for` loop.

By the way,

if(t == TRUE)

is redundant -- better is:

if(t)


Pat


On 02/03/2013 23:57, Louise Stevenson wrote:
> Hi,
>
> I'm trying to set up R to run a simulation of two populations in which every 3.5 days, the initial value of one of the populations is reset to 1.5. I'm simulation an experiment we did in which we fed Daphnia populations twice a week with algae, so I want the initial value of the algal population to reset to 1.5 twice a week to simulate that feeding. I've use for loops and if/else loops before but I can't figure out how to syntax "if t is in this vector of possible t values, do this command, else, do this command" if that makes sense. Here's what I have (and it doesn't work):
>
> params = c(1, 0.15, 0.164, 1)
> init = c(1.5, 0.05)
> t=seq(1,60, by=0.5) #all time values, experiment ran for 60 days
>
> #feeding sequence - every "3.5 days"
> feed_days = seq(1,60,by=3.5)
>
> Daphnia <- function(t,x,params){
> 	C_D = x[2];
> 	C_A = 0;
> 	for(t %in% feed_days){
> 		if t == TRUE {
> 		C_A = 1.5
> 		}
> 	else{
> 		C_A = 0
> 	 }}
> 	gamma = params[1]; m_D = params[2]; K_q = params[3]; q_max = params[4];
> 	M_D = m_D * C_D
> 	I_A = (C_D * q_max * C_A) / (K_q + C_A)
> 	r_D = gamma * I_A
> 	return(
> 	list(c(
> 	 - I_A,
> 	r_D - M_D
> 	)))
> 	}
>
> library(deSolve)
> results <- ode(init, t, Daphnia, params, method = "lsoda")
>
>
> Let me know if there's any other info that would be helpful and thanks very much for your help!
>
>
> 	[[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.
>

-- 
Patrick Burns
pburns at pburns.seanet.com
twitter: @burnsstat @portfolioprobe
http://www.portfolioprobe.com/blog
http://www.burns-stat.com
(home of:
  'Impatient R'
  'The R Inferno'
  'Tao Te Programming')



More information about the R-help mailing list