Steinmann, Kimberly@CDPR
2019-Dec-23 23:38 UTC
[R] help with if statement with two conditions
Hi Jim, Burt and all who have been so helpful - very much appreciated! I have managed to get the code to run correctly by extending the parentheses around the whole statement, including the &, rather than parentheses around the two clauses on either side of the &. It seems to have done the trick! I am not sure how to close the thread - I hate to waste anyone's time on a problem that is no longer a problem! I am new to this forum Thanks again for all the feedback and help everyone! -Kimberly -----Original Message----- From: Jim Lemon <drjimlemon at gmail.com> Sent: Monday, December 23, 2019 3:33 PM To: Steinmann, Kimberly at CDPR <Kimberly.Steinmann at cdpr.ca.gov>; r-help mailing list <r-help at r-project.org> Subject: Re: [R] help with if statement with two conditions EXTERNAL: Hi Kimberley, Since you are using a loop and therefore testing one value of v_trends_lbs at a time, the "&" in the "if" statement should be "&&". Pinching Bert's example but using a for loop instead of ifelse: x <- seq(-2,2,.25) v_lbs<-rep("",length(x)) for(i in 1:length(x)) { if(is.na(x[i])) v_lbs<-"0" else { if(x[i] < 0.51 && x[i] > 0) v_lbs[i]<-"<1" else v_lbs[i] <- format(round(x[i]), big.mark=",",scientific=FALSE) } } x v_lbs I think this gives you the "right" answer, as I have used 0.51 to avoid the rounding problem at 0.5. I can see that the output is feeding into something else, and an incorrect value at the end of your calculations would be more difficult to track back. Bert's "ifelse" is a more elegant way to do this, although not quote as easy for the beginner to understand. Jim On Tue, Dec 24, 2019 at 7:33 AM Steinmann, Kimberly at CDPR <Kimberly.Steinmann at cdpr.ca.gov> wrote:> > Hi - i am not super familiar with R, but need to modify my predecessor's R code so that if a variable is >0 and < 0.5, it will be replaced with <1. I have looked at a bunch of forum threads on the subject, but cannot seem to get anything to work Any help at what i might be doing wrong much appreciated. I am definitely an R newbie! > > current code that works: > v_lbs_list <- "" > for (j in 2:(p_num_years+1)) { > if (is.na(v_trends_lbs[i, j])) { > v_lbs <- ' 0 ' > } else if (v_trends_lbs[i, j] < 0.5) { > v_lbs <- ' $<$1 ' > } else { > v_lbs <- format(round(v_trends_lbs[i, j]), big.mark=",", scientific=FALSE) > } > v_lbs_list <- paste(v_lbs_list, ' & ', v_lbs) > } > > my attempt to add a >0 that gets an error pointing at the & sign: > v_lbs_list <- "" > for (j in 2:(p_num_years+1)) { > if (is.na(v_trends_lbs[i, j])) { > v_lbs <- ' 0 ' > } else if (v_trends_lbs[i, j] < 0.5) & (v_trends_lbs[i, j] > 0) { > v_lbs <- ' $<$1 ' > } else { > v_lbs <- format(round(v_trends_lbs[i, j]), big.mark=",", scientific=FALSE) > } > v_lbs_list <- paste(v_lbs_list, ' & ', v_lbs) > } > > Thanks for any help! > > > CONFIDENTIALITY NOTICE: This e-mail message, including > a...{{dropped:10}} > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://gcc02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstat > .ethz.ch%2Fmailman%2Flistinfo%2Fr-help&data=02%7C01%7CKimberly.Ste > inmann%40cdpr.ca.gov%7C7007357d15244e97a63108d7880088a1%7C0fc528a55d14 > 4d0da7bef2487d8d0e30%7C0%7C1%7C637127408183702102&sdata=x2ugp%2Bs% > 2BYE%2BmCANwK0QIGtKnfOcHJ0Xpf%2BYZzUTgPxs%3D&reserved=0 > PLEASE do read the posting guide > https://gcc02.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.R > -project.org%2Fposting-guide.html&data=02%7C01%7CKimberly.Steinman > n%40cdpr.ca.gov%7C7007357d15244e97a63108d7880088a1%7C0fc528a55d144d0da > 7bef2487d8d0e30%7C0%7C1%7C637127408183702102&sdata=sFBbNktlRfA4FZX > 5qTQdkcNYOx8xNX6MGU2MKnFLoSE%3D&reserved=0 > and provide commented, minimal, self-contained, reproducible code.CONFIDENTIALITY NOTICE: This e-mail message, including any attachments, is for the sole use of the intended recipient(s) and may contain confidential and privileged information. Any unauthorized review, use, disclosure, or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message.
Hi Kimberley, Given the number of posts that read "I have a problem, please advise", your concern for our mental welfare is a great Xmas present. Jim On Tue, Dec 24, 2019 at 10:38 AM Steinmann, Kimberly at CDPR <Kimberly.Steinmann at cdpr.ca.gov> wrote:> > I am not sure how to close the thread - I hate to waste anyone's time on a problem that is no longer a problem! I am new to this forum >