如何使用if语句在r中增加两个变量?
我使用以下方法生成了一个600长度的样本:如何使用if语句在r中增加两个变量?,r,if-statement,increment,R,If Statement,Increment,我使用以下方法生成了一个600长度的样本: x <- rnorm(600, mean = 30, sd = 10) 我的计划是用if语句测试y是否大于1.96,如果-y小于1.96,如果发生这种情况,则将变量a增加1,如果没有发生,则将变量b增加1 我试过以下几件事: a = 0 b = 0 ifelse(y > 1.96, inc(a) <- 1, inc(b) <- 1) ifelse(-y < -1.96, inc(a) <- 1, inc(b) &
x <- rnorm(600, mean = 30, sd = 10)
我的计划是用if语句测试y是否大于1.96,如果-y
小于1.96,如果发生这种情况,则将变量a
增加1,如果没有发生,则将变量b
增加1
我试过以下几件事:
a = 0
b = 0
ifelse(y > 1.96, inc(a) <- 1, inc(b) <- 1)
ifelse(-y < -1.96, inc(a) <- 1, inc(b) <- 1)
那么,我如何增加变量或者我做错了什么呢?避免使用
ifelse()
进行此类计算。在这种情况下,最好通过获得TRUE
/FALSE
值的向量,然后对TRUE
值求和,来使用R的矢量化属性(例如,仅R向量中没有“标量”)
# Make the data
set.seed(1337)
x = rnorm(600, mean = 30, sd = 10)
y = ((x-30)/10)
# Get Indicators (T/F)
v1 = y > 1.96
v2 = y < -1.96
# Sum over w.r.t to true cases
a = sum(v1) + sum(v2)
# Handle the false cases without resumming.
b = 2*length(y) - a
#生成数据
种子集(1337)
x=rnorm(600,平均值=30,标准差=10)
y=((x-30)/10)
#获取指示器(T/F)
v1=y>1.96
v2=y<-1.96
#w.r.t的总和为真实情况
a=和(v1)+和(v2)
#在不重新提交的情况下处理虚假案例。
b=2*长度(y)-a
此外,这里我们选择使用
y<-1.96
来获得适当的双面计数。避免使用ifelse()
进行此类计算。在这种情况下,最好通过获得TRUE
/FALSE
值的向量,然后对TRUE
值求和,来使用R的矢量化属性(例如,仅R向量中没有“标量”)
# Make the data
set.seed(1337)
x = rnorm(600, mean = 30, sd = 10)
y = ((x-30)/10)
# Get Indicators (T/F)
v1 = y > 1.96
v2 = y < -1.96
# Sum over w.r.t to true cases
a = sum(v1) + sum(v2)
# Handle the false cases without resumming.
b = 2*length(y) - a
#生成数据
种子集(1337)
x=rnorm(600,平均值=30,标准差=10)
y=((x-30)/10)
#获取指示器(T/F)
v1=y>1.96
v2=y<-1.96
#w.r.t的总和为真实情况
a=和(v1)+和(v2)
#在不重新提交的情况下处理虚假案例。
b=2*长度(y)-a
此外,这里我们选择使用y<-1.96
来获得适当的双面计数。如果y>1.96,那么-y必须是1.96)etc将工作如果y>1.96,那么-y必须是1.96)etc将工作
if (y > 1.96) {
a = a + 1
}
if (-y < -1.96) {
a = a + 1
} else{
b = b + 1
}
ifelse(y > 1.96, a <- a + 1, b <- b + 1)
ifelse(-y < -1.96, a <- a + 1, b <- b + 1)
a
# [1] 1
b
# [1] 1
# Make the data
set.seed(1337)
x = rnorm(600, mean = 30, sd = 10)
y = ((x-30)/10)
# Get Indicators (T/F)
v1 = y > 1.96
v2 = y < -1.96
# Sum over w.r.t to true cases
a = sum(v1) + sum(v2)
# Handle the false cases without resumming.
b = 2*length(y) - a