gpt4 book ai didi

r - 循环内未更新的元素向量

转载 作者:行者123 更新时间:2023-12-04 15:17:21 25 4
gpt4 key购买 nike

从逻辑上讲,这段代码应该是有意义的,我主要是一名 Python 程序员,但我不确定为什么这行不通。它不返回任何错误。我想要的是将这个主要为零的向量更改为仅包含 1 和 -1 的向量(因此使用样本函数)。我的问题是向量的值没有更新,它们只是保持为 0,我不确定为什么。

Y = numeric(100)

for (i in 100){
x <- sample(1:2, 1)
if (x == 2){
Y[i] = 1
}
else{
Y[i] = -1
}
}

我还将 Y[i] = 1 更改为 Y[i] <- 1 但这没有帮助。我也知道 x 是 1 或 2,因为我使用 x == 2...等手动测试它

我唯一能想到的另一个问题是 x 是一个整数,而返回的数字样本不是整数,但是每次检查这个:(注意循环退出后 x = 2L)

> typeof(x)
[1] "integer"
> typeof(2)
[1] "double"
> x == 2
[1] TRUE

我不认为这是问题所在。
有什么建议吗?

最佳答案

因为循环只运行一次,即最后一次迭代。它确实改变了输出向量 Y

tail(Y)
#[1] 0 0 0 0 0 -1

相反,它将是 1:100

for(i in 1:100)

第二个问题是 typeof 'x'。在这里,我们使用 1:2 而不是数字向量来采样 整数 并返回相同的类型 作为输入。根据 ?':'

For numeric arguments, a numeric vector. This will be of type integer if from is integer-valued and the result is representable in the R integer type, otherwise of type "double"

typeof(1:2)
#[1] "integer"
typeof(c(1, 2))
#[1] "double"

如果是范围 (:),另一种选择是用 as.numeric 包装

for (i in 1:100){
x <- sample(as.numeric(1:2), 1)
if (x == 2){
Y[i] = 1
}
else{
Y[i] = -1
}
}

检查类型

typeof(Y)
#[1] "double"
typeof(x)
#[1] "double"

关于r - 循环内未更新的元素向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64083206/

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