gpt4 book ai didi

r - For 循环 : How could I repeat several steps?

转载 作者:行者123 更新时间:2023-12-04 12:32:37 26 4
gpt4 key购买 nike

我是 R 的新手,对 for 循环有点困惑。

我尝试在满足指定条件后在 for 循环中重复几个步骤。我试图将循环后退一步,但发现循环一直在计数并忽略了我的命令。这是一个简单的例子来说明我的意思:

a <- 1:10
b <- rep(NA, 15)

fun <- function(){
i <- 1
for(i in 1:10){
b[i] <- a[i]
i <- i - 1 # This is the line I am talking about.
}
return(b)
}
fun()

[1] 1 2 3 4 5 6 7 8 9 10 NA NA NA NA NA

我原以为这段代码会永远运行并且只分配 1。有没有一种方法可以让我在 for 循环中后退一步,或者我是否必须采用完全不同的方法?

提前致谢!

最佳答案

for 循环的工作方式是,如果你有 for (i in 1:10),首先将 i 设置为 1,然后循环体被执行。然后我们回到顶部,将i设置为2,再次执行循环体。基本上,这个循环:

for (x in 1:3) {
print(x^2)
}

相当于这段代码:

x = 1
print(x^2)
x = 2
print(x^2)
x = 3
print(x^2)

因此,您尝试通过更改 i 使循环后退一步是行不通的,因为 for 循环实际上并不监视 i 是,它只是为原始 1:10 序列的每个元素运行一次循环体。

如果您想有时重复一个步骤,您应该使用 while 循环并手动递增 i:

a <- 1:10
b <- rep(NA, 15)

i <- 1
while (i <= 10) {
b[i] <- a[i]
# Flip a coin, don't move on if it comes up tails
# Replace this test with the relevant condition you
# want to check for
if (sample(c(0, 1), 1) == 1) {
i <- i + 1
} else {
print(paste("Repeating with i =", i))
}
}

关于r - For 循环 : How could I repeat several steps?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30292873/

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