# Correlated variables

4 messages
Open this post in threaded view
|

## Correlated variables

 Hi, I'm trying to create binary variable which distribution conditioned on other variables. That is what I did, x1=rnorm(n,0,1); x2=rnorm(n,0,1); x3=rnorm(n,0,1); if(x1+x2-x3>0.25){   t=rbinom(1, 1, prob=0.25) }else{   t=rbinom(1, 1, prob=0.5) } But I always get this the warning: Warning message:In if (x1 + x2 - x3 > 0.5) { :   the condition has length > 1 and only the first element will be used Can I do this without using function "for"? Thank you in advance. Ariel -- *I like to pretend I'm alone*. *Completely alone*. *Maybe post-apocalypse or plague*... *Whatever*. *No-one left to act normal for. No need to hide who I really am. It would be... freeing*. *...*         [[alternative HTML version deleted]] ______________________________________________ [hidden email] mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|

## Re: Correlated variables

 You will have to use a for loop if you insist on using control statements such as if-else. You should really read up on the ifelse() function and vectorization in R: > set.seed(42) # So your results will match these > n <- 25 > x1 <- rnorm(n, 0, 1) > x2 <- rnorm(n, 0, 1) > x3 <- rnorm(n, 0, 1) > prb <- ifelse(x1 + x2 - x3 > .25, .25, .5) > prb  [1] 0.25 0.50 0.50 0.25 0.50 0.50 0.25 0.25 0.25 0.50 0.50 0.25 0.50 0.50 [15] 0.25 0.50 0.50 0.50 0.50 0.50 0.25 0.50 0.25 0.25 0.25 > t <- rbinom(n, 1, prob=prb) > t  [1] 0 0 1 0 1 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 ?ifelse ?Control ?rbinom ------------------------------------- David L Carlson Department of Anthropology Texas A&M University College Station, TX 77840-4352 -----Original Message----- From: R-help [mailto:[hidden email]] On Behalf Of Art U Sent: Wednesday, March 15, 2017 9:56 AM To: [hidden email] Subject: [R] Correlated variables Hi, I'm trying to create binary variable which distribution conditioned on other variables. That is what I did, x1=rnorm(n,0,1); x2=rnorm(n,0,1); x3=rnorm(n,0,1); if(x1+x2-x3>0.25){   t=rbinom(1, 1, prob=0.25) }else{   t=rbinom(1, 1, prob=0.5) } But I always get this the warning: Warning message:In if (x1 + x2 - x3 > 0.5) { :   the condition has length > 1 and only the first element will be used Can I do this without using function "for"? Thank you in advance. Ariel -- *I like to pretend I'm alone*. *Completely alone*. *Maybe post-apocalypse or plague*... *Whatever*. *No-one left to act normal for. No need to hide who I really am. It would be... freeing*. *...*         [[alternative HTML version deleted]] ______________________________________________ [hidden email] mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code. ______________________________________________ [hidden email] mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.