r - 在 for 循环中跳过迭代
问题描述
我试图在 for 循环中跳过一些迭代:
Lines <- "
time Temperature
1 38.3
2 38.5
3 38.9
4 40.1
5 38.0
6 38.6
7 37.9
8 38.2
9 37.5
10 38.0"
DF <- read.table(text = Lines, header = TRUE)
for (i in unique(DF$time)){
ix=which(i==DF$time)
if(DF$Temperature[ix] > 38.65) ix=ix+3
print(ix)
}
但我没有得到想要的输出。它没有跳过迭代。相反,它只是覆盖它,以便我得到两次迭代。
输出:
[1] 1
[1] 2
[1] 6
[1] 7
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10
期望的输出:
[1] 1
[1] 2
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10
更新:
i=1
while(i<=DF$time){
if(DF$Temperature[i] > 38.65){
print(i)
i=i+3}
i=i+1
}
这就是我尝试过的。但显然是错的。之前没用过。有人能帮我吗?
解决方案
我认为你for
对while
R 中的子句感到困惑。这基本上就是你想要做的:
ix <- 1
while(ix <= 10) {
if (DF$Temperature[ix] > 38.65) {
ix = ix + 3
print(ix)
} else{
print(ix)
}
ix = ix + 1
}
用@jogo的更正编辑
推荐阅读
- php - 如何更改包括随日期更改的php?
- java - Maven JavaDoc 插件无法解析 XML
- php - MySql INSERT ON DUPLICATE KEY UPDATE 与时间条件
- python-3.x - 在 Mac 上导入 tweepy 错误
- javascript - 如何在 Angular 6 中使用完全自定义的组件
- c++ - 在 Visual Studio 中运行它们的一种配置
- angular - 如何在 DOM Element 和 Angular 之间创建映射
- c# - Interop.Excel - 使用 output.,Rows[i].Delete() 将行向上移动,以便 for 循环不会检查最近移动的行
- vue.js - 如何向 Vue 模块和实例添加自定义属性
- java - 如何将备用元素添加到字符串数组