在编写函数时,我需要编写以下内容:
x<-rnorm(10)
y<-ifelse(mean(x)>=0,rexp(10,1/mean(x)),-rexp(10,-1/mean(x)))
与x一样,我希望y是一个长度为10的向量,但令人惊讶的是它只输出一个数值。可重复的例子如下。
set.seed(10)
x<-rnorm(10)
y<-ifelse(mean(x)>=0,rexp(10,1/mean(x)),-rexp(10,-1/mean(x)))
> x
[1] 0.01874617 -0.18425254 -1.37133055 -0.59916772 0.29454513 0.38979430
[7] -1.20807618 -0.36367602 -1.62667268 -0.25647839
y<-ifelse(mean(x)>=0,rexp(10,1/mean(x)),-rexp(10,-1/mean(x)))
> y
[1] -0.2092798
我在这里缺少什么?为什么y不是长度为10的列表,即使在条件中指定了?
有趣的是,当我使用单独的if-else块编码相同的条件时,它按预期工作。但是,当以这种方式执行时,为什么没有相同的逻辑工作呢?一些澄清肯定会有所帮助。提前谢谢。
答案 0 :(得分:1)
ifelse
只能返回一个值。请尝试使用常见的if else
语句:
if(mean(x)>=0) y <- rexp(10,1/mean(x)) else y <- -rexp(10,-1/mean(x))