如何在变量上放置条件

时间:2019-03-15 15:57:55

标签: r

我具有以下采样功能:

z = rnorm(n, 0.3, 1)

,并希望我的变量f等于1,如果-pi < z_i < pi等于0。 我不确定如何实现这一目标。我的另一个想法是使用reject函数,但这似乎过于复杂。 谢谢!

2 个答案:

答案 0 :(得分:0)

您可以在此处使用函数ifelse,该函数可以完全满足您的要求:如果满足条件,则返回一个值,否则返回另一个值。例如,对于n = 10和pi = 1:

f = ifelse (rnorm(n=10, 0.3, 1) > 1,1,0)

通过此示例,您应该轻松弄清楚如何解决您的问题。

您还可以将结果保存在时间向量中,然后使用布尔运算符检查所需的确切条件:

ri = rnorm(n=10, 0.3, 1)
ifelse(-1 < ri & ri < 1,1,0)

在@ M-M注释之后,您还可以仅从评估的条件表达式中获取值1或0。例如:

as.integer(-1 < ri & ri < 1)

答案 1 :(得分:0)

假设您已创建变量z,则可以使用ifelse()进行此操作:

f <- ifelse(abs(z) < pi, 1, 0)

或使用:

f <- as.integer(abs(z) < pi)

第二个可能更快,尽管除非n很大,否则您可能不会注意到。

编辑:第二个方法要快得多:只需在1,000,000个值的向量上进行检查,第一个方法需要0.2秒,第二个方法显示elapsed 0