# [R] condition has length > 1 for LL denominator

jim holtman jholtman at gmail.com
Wed Nov 2 02:41:28 CET 2011

```will this do it:

> x <- read.table(textConnection("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"), header = TRUE)
>  closeAllConnections()
>  denom <- lapply(split(x, x\$intercept), function(.int){
+     paste(
+         sprintf("exp(P_%d_%d)", .int\$arrive, .int\$depart)
+         , collapse = "+"
+         )
+ })
>
> denom
\$`1`
[1] "exp(P_1_1)+exp(P_1_2)+exp(P_1_3)"

\$`2`
[1] "exp(P_1_2)+exp(P_1_3)+exp(P_2_2)+exp(P_2_3)"

\$`3`
[1] "exp(P_1_3)+exp(P_3_3)"

On Tue, Nov 1, 2011 at 9:29 PM, David Winsemius <dwinsemius at comcast.net> wrote:
>  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 at 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 at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> and provide commented, minimal, self-contained, reproducible code.
>
>        [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> and provide commented, minimal, self-contained, reproducible code.
>

--
Jim Holtman
Data Munger Guru

What is the problem that you are trying to solve?
Tell me what you want to do, not how you want to do it.

```