【发布时间】:2019-10-19 19:31:31
【问题描述】:
考虑以下玩具示例:
set.seed(10)
(n <- sample(5,size=1))
(d <- matrix(sample(1:100, size = n), ncol=1))
(g <- matrix(sample(1:10, size = n), ncol=1))
i <-1
while(d>g){
cat( "iteration" , i,"\n")
g <- g+1
i <- i + 1
}
g
Warning messages:
1: In while (d > g) { :
the condition has length > 1 and only the first element will be used
这里d 和g 都是列向量。 R 只检查第一个元素。只要g 的第一个元素大于或等于d,循环就会终止。但我的意图是执行循环,直到g 的每个元素都大于或等于d。如果我事先知道对象n,我会将while 循环内的条件写为(d[1]>g[1] &d[2]>g[2] &d[3]>g[3])。但我事先不知道n。我该怎么做?
【问题讨论】:
-
while (any(d > g)) {...}? -
@r2evans 写
while (all(d>g))在循环结束时给出g的值 (9,10,8);当 d=(9,74,76)。d的最后 2 个元素仍然大于g的最后 2 个元素。 -
any,不是all(我在评论后几秒钟更新了它)
标签: r