[R] Odp: if condition doesn't evaluate to True/False
Petr PIKAL
petr.pikal at precheza.cz
Wed Apr 29 17:07:41 CEST 2009
Hi
you put your problem in absolutely messy state
r-help-bounces at r-project.org napsal dne 29.04.2009 16:16:55:
> Hi friends,
> Please help me with this bug.
>
> *Bug in my code:*
>
> In this variable sub_grp_whr_cls_data[sbgrp_no,1] I store the where
> clause.every sub group has a where condition linked with it.
>
> Database1
>
>
> Where clause was not found for a particular subgroup,
> sub_grp_whr_cls_data[sbgrp_no,1] value was NULL
>
> So the condition (*sub_grp_whr_cls_data[sbgrp_no,1]=="NULL" ||
> sub_grp_whr_cls_data[sbgrp_no,1]==""*) should evaluate to TRUE ,but it
> evaluated to NA
Are you sure that
sub_grp_whr_cls_data[sbgrp_no,1] was either "NULL" or ""
I suspect that it is NA
you can get three results with logical values
> x<-c(1,"NULL", NA, "", 1)
> x=="NULL"|x==""
[1] FALSE TRUE NA TRUE FALSE
So if the value is "NULL" or "" you will get TRUE, if it is anything else
you will get FALSE but if it is NA you will get NA.
Actually if the value is NA you do not know if it should be "NULL", "" or
anything else therefore result is NA
Regards
Petr
>
> So the if block where I used the the condition threw error
>
> If(*sub_grp_whr_cls_data[sbgrp_no,1]=="NULL" ||
> sub_grp_whr_cls_data[sbgrp_no,1]==""*)
>
> i.e if(NA)
>
> Error:--
>
> Error in if (sub_grp_whr_cls_data[sbgrp_no, 1] == "NULL" ||
> sub_grp_whr_cls_data[sbgrp_no, :
>
> missing value where TRUE/FALSE needed
>
> Comments:-- but when there ‘s no where clause value the condition
> (sub_grp_whr_cls_data[sbgrp_no,1]=="NULL"
> ||sub_grp_whr_cls_data[sbgrp_no,1]=="") should automatically evaluate to
*
> TRUE*
>
>
>
> Database2
>
> Where clause was found for a particular subgroup
>
> The condition (sub_grp_whr_cls_data[sbgrp_no,1]=="NULL"
> ||sub_grp_whr_cls_data[sbgrp_no,1]=="") evaluated to FALSE
>
> So if (sub_grp_whr_cls_data[sbgrp_no,1]=="NULL"
> ||sub_grp_whr_cls_data[sbgrp_no,1]=="") is
>
> If (FALSE) ,control goes to the else part.
>
> This is exactly what is expected of the program.
>
> *QUERY:-- **If the condition evaluates to FALSE when a where condition
is
> available why doesn’t it evaluate to TRUE when a where condition
available
> is NULL or no where condition is available.*
>
> Here I have taken the example of two databases where I tried to get the
> where clause for subgroup 1.In case of Database1 it was not available in
> case of Databse2 it was available.But the problem may appear for the
same
> database also, when where clause is available for say one subgroup and
not
> for the other.
>
> --
> Thanks
> Moumita
>
> [[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.
More information about the R-help
mailing list