Skip to content
Back to formatted view

Raw Message

Message-ID: <CAAxdm-7-oa85f7YhqPGWivtWb5PtszUuxJ1bySKpEZZ7wDS+cA@mail.gmail.com>
Date: 2011-11-02T01:41:28Z
From: jim holtman
Subject: condition has length > 1 for LL denominator
In-Reply-To: <DEDA81F0-D4CA-48DF-857F-53300CBFD5A6@comcast.net>

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
>> 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]]
>
> ______________________________________________
> 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
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.