【发布时间】:2021-06-22 10:08:50
【问题描述】:
假设我有一个数字列表。
x <- c(10,12,5,23,40,27,11,4,7,25,21,7,99,45,2,10)
我想在 for 循环内使用 if 条件打印前 5 个大于 20 的数字,原因是这是一个简单的可重现示例,实际场景需要 for 循环内的 if 条件。有没有办法在不限制范围的情况下获得大于 20 的前 5 个数字?找到所有大于 20 的数字的方法是这样的
for(i in 1:length(x)){
if(x[i]>20){
print(x[i])
}
}
也可以将问题视为将打印语句限制为前 5 个实例。 有人可以帮忙吗? 请注意,for循环的范围不能被限制得出一个解决方案。
要求的答案是
23,40,27,25,21
使用for循环,if条件和打印语句/cat/writeLines是必须的
【问题讨论】:
-
当有 5 次点击时是否可以退出循环,或者在未简化的循环中发生了其他需要为其余部分完成的事情。
-
最好用例应该成功地遍历整个值列表并返回满足条件的前 5 个值。即使条件没有评估为 5 个 TRUE 条件,它也应该返回 TRUE 条件。例如,逻辑应该是前 5 个,但即使我们只得到 2 个条件而不是最多 5 个,那么应该打印这 2 个。关于你的问题,我假设在这个用例中,当满足前 5 个条件时迭代整个循环会浪费内存?
-
谢谢。好的,但也可以有一个解决方案,它已经限制了
for循环的范围。 -
我也想过。你能告诉我你到底在想什么吗?
-
例如:
for(i in which(cumsum(x > 20) <= 5)) {...
标签: r