# [R] Correlated variables

David L Carlson dcarlson at tamu.edu
Wed Mar 15 19:07:46 CET 2017

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:r-help-bounces at r-project.org] On Behalf Of Art U
Sent: Wednesday, March 15, 2017 9:56 AM
To: r-help at r-project.org
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"?

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]]

______________________________________________
R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help