我尝试用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
Run Code Online (Sandbox Code Playgroud)
在我看来,b应始终从0步到0.1步.但它并不总是,有时步数较小,如矢量v的位置23-28(例如)中所见.有没有人知道为什么会这样.我找不到错误!谢谢!
seq有关值length.out将被四舍五入的注释的文档.由于a是数字,因此与某些错误相关联,因此可能会获得比您预期更长的一个长度,从而为您提供奇怪的输出.
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"
Run Code Online (Sandbox Code Playgroud)
注意最后一行:你得到8而不是7.
要解决此问题,请尝试通过舍入将长度转换为整数:
for (b in seq(0, a, length.out=round(10*a+1))){
Run Code Online (Sandbox Code Playgroud)