Ptit_Bleu
2009-Mar-04 08:11 UTC
[R] nice way to find or not a value (problem with numeric(0))
Hello, I have a data.frame called spec containing data about samples. But I don't have these data for all my samples. So if I have data (that is code of the sample is in spec$Code), I would like to assign data1 to the variable m. If I don't have this data, I would like to assign 1 to m. I tried this : m<-spec$data1[spec$Code==code]*(code %in%specmodules$Code) + 1*(!code %in% specmodules$Code) It works when I have the data but if it is not the case I get numeric(0) instead of 1. I finally use the following command. It works but I'm sure there is a more elegant way. if (code %in%spec$Code) m<-spec$data1[spec$Code==code] else m<-1 Is there a way to avoid an if-test ? Thanks for your help, Have a good day, Ptit Bleu. -- View this message in context: http://www.nabble.com/nice-way-to-find-or-not-a-value-%28problem-with-numeric%280%29%29-tp22325406p22325406.html Sent from the R help mailing list archive at Nabble.com.
Petr PIKAL
2009-Mar-04 08:35 UTC
[R] Odp: nice way to find or not a value (problem with numeric(0))
Hi r-help-bounces at r-project.org napsal dne 04.03.2009 09:11:06:> > Hello, > > I have a data.frame called spec containing data about samples. But Idon't> have these data for all my samples. > So if I have data (that is code of the sample is in spec$Code), I wouldlike> to assign data1 to the variable m. > If I don't have this data, I would like to assign 1 to m. > > I tried this : > m<-spec$data1[spec$Code==code]*(code %in%specmodules$Code) + 1*(!code%in%> specmodules$Code) > > It works when I have the data but if it is not the case I get numeric(0) > instead of 1. > > I finally use the following command. It works but I'm sure there is amore> elegant way. > if (code %in%spec$Code) m<-spec$data1[spec$Code==code] else m<-1It is a bit cryptic what do you want. Above version shall not work as it takes only one logical value but you probably have vector of values. (We do not know code, spec$Code or any other data you have). when I try your first construction with some values I have I get sensible results so without trying to find out how your data really look like I suggest you to inspect it more closely and/or provide some working example demonstrating what you did, what is the result and how the result shall look like. zdrz$sklon*zdrz$otac %in% c(.6,1.2,2)+1*!(zdrz$otac %in% c(.6,1.2,2)) [1] 110 80 50 50 10 1 120 80 50 20 zdrz$otac[5]<-NA zdrz$sklon*zdrz$otac %in% c(.6,1.2,2)+1*!(zdrz$otac %in% c(.6,1.2,2)) [1] 110 80 50 50 1 1 120 80 50 20 zdrz$sklon[4]<-Inf zdrz$sklon*zdrz$otac %in% c(.6,1.2,2)+1*!(zdrz$otac %in% c(.6,1.2,2)) [1] 110 80 50 Inf 1 1 120 80 50 20 zdrz$sklon[4]<-NA zdrz$sklon*zdrz$otac %in% c(.6,1.2,2)+1*!(zdrz$otac %in% c(.6,1.2,2)) [1] 110 80 50 NA 1 1 120 80 50 20 Regards Petr> > Is there a way to avoid an if-test ? > > Thanks for your help, > Have a good day, > Ptit Bleu. > > -- > View this message in context:http://www.nabble.com/nice-way-to-find-or-not-a-> value-%28problem-with-numeric%280%29%29-tp22325406p22325406.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 guidehttp://www.R-project.org/posting-guide.html> and provide commented, minimal, self-contained, reproducible code.
Possibly Parallel Threads
- a loop....
- an unsophisticated question about recoding in a data frame with control structure if {}
- how to use if statement in function correctly
- [PATCH] one-time ssh-agent confirmation password
- [Bug 1393] New: patch modifies gnome-ssh-askpass to optionally use one-time password