gpt4 book ai didi

r - 如何从循环和 if 语句创建二进制变量

转载 作者:行者123 更新时间:2023-12-05 01:09:29 26 4
gpt4 key购买 nike

假设我有一个向量 x包含 0 到 2 之间的 20 个值。

x = runif(20, 0, 2)

现在,我想创建另一个向量 y (二进制变量)在以下​​条件下仅包含 0 和 1: y = 0如果 x < 1y = 1万一 x > 1 .

我试图用一个循环和一个 if 来做到这一点。声明方式如下:
x = runif(20, 0, 2) # Create a vector of 20 values between 0 and 2
y = rep(5, 20) # Create a vector of 20 values (only 5's)

for(i in 1:length(x)) # Loop that assigns values to the y vector depending on x
{
if(x < 1)
{
y[i] = 0
}
else
{
y[i] = 1
}
}

但不幸的是它没有像我的计划那样工作 y向量最终只包含 0。我做错了什么?谢谢 :)

最佳答案

这可以使用矢量化操作而不是循环来完成:

> x <- runif(20, 0, 2)
> y <- as.integer(x > 1)
> x
[1] 0.06553935 1.23221386 0.39982502 0.27821193 1.15281280 0.14248373 0.09206153 1.63555223 0.44962775 0.70711450
[11] 0.93994130 1.41955732 1.95790383 0.99646643 1.38737559 1.75813075 1.32844540 0.53076589 0.96152349 1.31173062
> y
[1] 0 1 0 0 1 0 0 1 0 0 0 1 1 0 1 1 1 0 0 1

更通用的解决方案是使用 ifelse因为它允许您使用零和一以外的值:
> ifelse(x <= 1, -5, 5)
[1] -5 5 -5 -5 5 -5 -5 5 -5 -5 -5 5 5 -5 5 5 5 -5 -5 5

最后,值得注意的是,您可以通过以下两种方法之一使用更复杂的表达式:
> ifelse(x >= .5 & x <= 1.5, -5, 5)
[1] 5 -5 5 5 -5 5 5 5 5 -5 -5 -5 5 -5 -5 5 -5 -5 -5 -5

关于r - 如何从循环和 if 语句创建二进制变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15738774/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com