 Posted to another thread a response to this posting ( and to all those who wanted R on an iPad, I say "forget it"
---------

The if function only takes an argument of length 1 (as the warning says):

?"if"

Many such confusions are resolved by looking at :

?ifelse

-- 
David
On Nov 1, 2011, at 4:45 PM, "M. Tran" <michellev.tran@gmail.com> wrote:

> I have a dataset called "results" that looks like this:
> 
> arrive  depart  intercept
>  1        1          1
>  1        2          1
>  1        3          1
>  1        2          2
>  1        3          2
>  1        3          3 
>  2        2          2
>  2        3          2
>  3        3          3
> 
> where arrive is the period of arrival, depart is the period of departure,
> and intercept is the period in which that person was counted.  I'm trying to
> construct the denominator for a likelihood function using the following
> function.  For the first row in "results", for example, I want the
> denominator to be the sum of all possible arrive/depart combinations an
> interceptor in period 1 could observe: exp(P_1_1) + exp(P_1_2) + exp(P_1_3)
> (i.e. P_arrive_depart).
> 
> get_denominator = function(intercept, periods_per_day)
>    {
>    denominator    =    array("(", nrow(results))
>    for (arrival in 1:periods_per_day)
>    {
>        for (departure in arrival:periods_per_day)
>        {
>            while (arrival <= intercept & intercept <= departure)
>            {
>        addition_to_denom    =    paste("P", arrival, departure, sep = "_")
>                if (nchar(denominator) == 1)
>                {
>        denominator        =    paste(denominator, "exp(", addition_to_denom, ")", sep =
> "")
>                }
>                else
>                {
>        denominator        =    paste(denominator, " + exp(", addition_to_denom, ")", sep =
> "")
>                }
>            }
>        }
>    }
>        denominator        =    paste(denominator, ")")
>        return(denominator)
>    }
> 
> 
> denominator    =    get_denominator(intercept        =    results[,"intercept"],
>                                    periods_per_day    =    3)
> 
> 
> I'm getting the following warning message:
> 
> In if (arrival <= intercept & intercept <= departure) { ... :
>  the condition has length > 1 and only the first element will be used.
> 
> As written, the code gives me the denominator for a period 1 interceptor for
> every single row!  
> 
> I'm having trouble figuring out how I should re-write this code.  Any
> suggestions would be greatly appreciated.
> 
> 
> 
> --
> View this message in context: http://r.789695.n4.nabble.com/condition-has-length-1-for-LL-denominator-tp3965365p3965365.html
> Sent from the R help mailing list archive at Nabble.com.
> 
> ______________________________________________
> R-help@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.

	[[alternative HTML version deleted]]

