[R] help with nesting if else statements

Ana Marija @okov|c@@n@m@r|j@ @end|ng |rom gm@||@com
Thu Sep 24 02:35:19 CEST 2020


Hi Jeremie,

when I try to reproduce your code this is what I get:

> a=setDT(a)
> head(a)
       FID  IID CURRELIG PLASER RTNPTHY
1: fam0110 G110        2      2       2
2: fam0113 G113        2      2       2
3: fam0114 G114        2      2       2
4: fam0117 G117        2      2       2
5: fam0118 G118        2     NA       2
6: fam0119 G119        2      1       2
> a=a[,PHENO:=NA]
> head(a)
       FID  IID CURRELIG PLASER RTNPTHY PHENO
1: fam0110 G110        2      2       2    NA
2: fam0113 G113        2      2       2    NA
3: fam0114 G114        2      2       2    NA
4: fam0117 G117        2      2       2    NA
5: fam0118 G118        2     NA       2    NA
6: fam0119 G119        2      1       2    NA
> a=a[PLASER==2|RTNPTHY==2,PHENO:=2]
Warning message:
In `[.data.table`(a, PLASER == 2 | RTNPTHY == 2, `:=`(PHENO, 2)) :
  2.000000 (type 'double') at RHS position 1 taken as TRUE when
assigning to type 'logical' (column 6 named 'PHENO')

Please advise,
Ana

On Wed, Sep 23, 2020 at 2:48 PM Jeremie Juste <jeremiejuste using gmail.com> wrote:
>
>
> Hello Ana Marija,
>
> I cannot reproduce your error,
>
> with a$PHENO=ifelse(a$PLASER==2 |a$RTNPTHY==2, 2, ifelse(a$CURRELIG==1 | a$RTNPTHY==1,1,NA))
> For instance I have the expected PHENO=2
>
> >     FID      IID   CURRELIG  PLASER  RTNPTHY PHENO
> > 39: fam5706 G5706        1      1       2     2
>
> In general I find nested ifelse to be difficult to work with especially
> when I am tired :-). I would suggest this alternative way instead. It uses
> data.table and you can investigate each step if you need to.
>
> library(data.table)
> setDT(a)
> a[,PHENO:=NA]
> a[PLASER==2|RTNPTHY==2,PHENO:=2]
> a[is.na(PHENO)&(CURRELIG==1|RTNPTHY==1),PHENO:=1]
>
>
> HTH,
> Jeremie
>
> a <- read.table(text="FID,IID,CURRELIG,PLASER,RTNPTHY
> fam5610,G5610,1,1,1
> fam5614,G5614,1,2,2
> fam5615,G5615,1,1,1
> fam5618,G5618,1,1,2
> fam5621,G5621,1,1,1
> fam5624,G5624,1,1,2
> fam5625,G5625,1,1,1
> fam5628,G5628,1,2,2
> fam5633,G5633,1,2,2
> fam5634,G5634,1,1,1
> fam5635,G5635,2,2,2
> fam5636,G5636,1,1,1
> fam5641,G5641,1,1,1
> fam5645,G5645,2,1,2
> fam5646,G5646,2,2,2
> fam5654,G5654,1,2,2
> fam5655,G5655,1,2,2
> fam5656,G5656,2,2,2
> fam5658,G5658,1,1,1
> fam5659,G5659,2,2,2
> fam5660,G5660,1,1,1
> fam5661,G5661,2,2,2
> fam5664,G5664,1,1,1
> fam5666,G5666,1,1,1
> fam5667,G5667,1,1,2
> fam5670,G5670,1,1,1
> fam5671,G5671,1,1,2
> fam5672,G5672,1,1,2
> fam5673,G5673,1,1,1
> fam5680,G5680,1,2,2
> fam5686,G5686,1,2,2
> fam5687,G5687,1,2,2
> fam5688,G5688,1,1,2
> fam5693,G5693,2,1,1
> fam5695,G5695,1,1,1
> fam5697,G5697,1,1,1
> fam5700,G5700,1,2,2
> fam5701,G5701,1,1,1
> fam5706,G5706,1,1,2
> fam5709,G5709,1,1,1
> fam5713,G5713,1,1,1
> fam5715,G5715,1,1,1
> fam5718,G5718,1,1,1",sep=",", header=TRUE)
>
>
>
>
>
>



More information about the R-help mailing list