如何使用if语句在r中增加两个变量?

如何使用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) &

我使用以下方法生成了一个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) <- 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