gpt4 book ai didi

r - R中的两个相互依赖的for循环,奇怪的结果

转载 作者:行者123 更新时间:2023-12-04 22:47:38 25 4
gpt4 key购买 nike

我尝试在 R 中为不同的参数值 a 和 b 计算一些东西,其中我的参数 b 总是应该小于或等于 a。为了做到这一点,我做了两个循环,其中我改变了 a(从 0 到 4)然后 b 从 0 到 a,但是 R 得到了我奇怪的 b 值。

v=c()
L<-0
for (a in seq(0, 4, length.out=41)){
for (b in seq(0, a, length.out=(10*a+1))){
L<-L+1
v[L]<-b
}
}
v

在我看来,b 应该总是以 0.1 的步长从 0 运行到 a。但并非总是如此,有时步长较小,如向量 v 的位置 23-28 所示(例如)。
有没有人知道为什么会这样。我找不到错误!
谢谢!

最佳答案

seq 的文档注意length.out的值将被四舍五入。自 a是数字,因此与一些错误相关联,可能会得到比预期多 1 的长度,这会给您带来奇怪的输出。

for (a in seq(0, 4, length.out=41)[1:7]){
print(paste(as.integer(10*a+1), ceiling(10*a+1)))
}
# [1] "1 1"
# [1] "2 2"
# [1] "3 3"
# [1] "4 4"
# [1] "5 5"
# [1] "6 6"
# [1] "7 8"

注意最后一行:你得到的是 8 而不是 7。

要解决这个问题,请尝试通过四舍五入将长度转换为整数:
for (b in seq(0, a, length.out=round(10*a+1))){

关于r - R中的两个相互依赖的for循环,奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17747303/

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