> On May 22, 2016, at 11:23 AM, Adrian Johnson <oriolebaltim...@gmail.com> > wrote: > > Thank you both Dylan and Wray. > > since my matrix is quite large and for simplicity in downstream > operation, i will use sign function. thanks a lot. > > On Sun, May 22, 2016 at 2:12 PM, Dylan Keenan <dylan.kee...@gmail.com> wrote: >> Try this: >> >>> sign(ifelse(abs(k)<=1.5, 0, k)) >> >> >> C1 C2 C3 C4 >> A 0 0 0 0 >> B 1 0 0 0 >> C 0 -1 0 0 >> D -1 1 -1 -1 >>
If the problems were somewhat less symmetric or more complex this would be a method that could be easily generalized to a larger number of less "absolutely" symmetric intervals: k2 <- k k2[] <- findInterval(k2, c(-Inf, -1.5, 1.5, Inf) ) -2 # shifts the 1-3 values to -1 to 1 k2 C1 C2 C3 C4 A 0 0 0 0 B 1 0 0 0 C 0 -1 0 0 D -1 1 -1 -1 Using k2[] <- ... preserves the matrix structure >> On Sun, May 22, 2016 at 2:00 PM Adrian Johnson <oriolebaltim...@gmail.com> >> wrote: >>> >>> Hi group: >>> I am having difficulty with if else condition. I kindly request some help. >>> >>> I have a matrix k >>> >>>> k >>> C1 C2 C3 C4 >>> A 0.09902175 -0.1083887 0.2018689 -0.3546167 >>> B 1.60623838 -1.4167034 0.9076373 -0.3161138 >>> C -0.10433133 -1.7060911 -0.4030050 1.0153297 >>> D -2.91485614 2.9201895 -2.4771802 -2.6991517 >>> >>> I want to convert values > 1.5 to 1, < -1.5 to -1 and rest to 0; >>> >>>> k1 - desired output >>> C1 C2 C3 C4 >>> A 0 0 0 0 >>> B 1 0 0 0 >>> C 0 -1 0 0 >>> D -1 1 -1 -1 >>> >>> >>> I am trying with if else but cannot do it. I could only define one >>> condition. Could someone help how I can do this. I dont mean only if >>> else, but any other way. >>> >>> k = >>> structure(c(0.0990217544905328, 1.60623837694539, -0.104331330281166, >>> -2.91485614212114, -0.108388742328104, -1.41670341534772, >>> -1.70609114096417, >>> 2.92018951284015, 0.201868946570178, 0.907637296638577, >>> -0.403004972105994, >>> -2.47718015803221, -0.354616729237253, -0.316113789733413, >>> 1.01532974064126, >>> -2.69915170731852), .Dim = c(4L, 4L), .Dimnames = list(c("A", >>> "B", "C", "D"), c("C1", "C2", "C3", "C4"))) >>> >>> >>> >>> k1 <- t(apply(k, 1, function(x) ifelse(x > 1.5,1,-1))) >>> >>>> k1 >>> C1 C2 C3 C4 >>> A -1 -1 -1 -1 >>> B 1 -1 -1 -1 >>> C -1 -1 -1 -1 >>> D -1 1 -1 -1 >>> >>> >>> >>> Thanks >>> Adrian >>> >>> ______________________________________________ >>> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see >>> 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. > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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. David Winsemius Alameda, CA, USA ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see 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.