r - R使用if next break in for循环出错
问题描述
我正在尝试if
在循环中使用语句,for
以便如果if
不满足条件,R 将停止为该i
值运行循环,但将继续运行整个循环,我认为我有一个(简单?)语法错误给我的结果与我的预期不同。
下面是我的示例数据集和我的循环:
test <- matrix(ncol=3, nrow=3, data = c(10, 20, 30, NA, 10, 20, 10, 30, 20), byrow = T)
mean_fun<-function(x,y){
mean <- sum(x,y)/2
return(mean)
}
for (i in (1:nrow(test))){
var1 <- vector()
var2 <- vector()
var1[i] <- mean_fun(test[i,1], test[i,2])
if (is.na(var1[i]==TRUE)) next
var2[i] <- mean_fun(var1[i], test[i,3])
print(var2)
}
如果我只是var1
在循环中计算值,var1 = c(15, NA, 20)
. 我不想计算var2
我的var1 == NA
. 简而言之,我想从这个循环中得到的结果是var2 = c(22.5, NA, 20.0)
.
但是当我运行这个循环时,我得到了[1] 22.5 [1] NA NA 20
这意味着循环运行正常i=1
并且可能但是在ori=2
期间搞砸了?我无法弄清楚语法是如何工作的,所以它给了我. 任何建议将不胜感激!i=2
i=3
NA NA 20
解决方案
您需要在循环之前初始化向量,而不是每次迭代都在循环内。此外,检查循环后的结果,而不是每次迭代。
var1 <- vector()
var2 <- vector()
for (i in (1:nrow(test))){
var1[i] <- mean_fun(test[i,1], test[i,2])
if (is.na(var1[i]==TRUE)) next
var2[i] <- mean_fun(var1[i], test[i,3])
}
var1
# [1] 15 NA 20
var2
# [1] 22.5 NA 20.0
推荐阅读
- powerbi - 性能缓慢的 Power BI 图表
- apache-spark - com.fasterxml.jackson.core.JsonParseException:在 pyspark-synapse 中获取 hadoop configuratioj 时无法识别令牌“drwxrwx”
- python-3.x - 我正在尝试让球随着时间的推移而减速
- raspberry-pi - 如何在 vlan 上设置树莓派,以便所有流量都通过 pi 上的 eth0?
- visual-studio-code - VS Code 语法高亮延迟
- r - 按组计算数据框中存在的连续月份
- r - .SD 和 data.table 的其他类似特殊变量的命名空间环境是什么?
- ruby-on-rails - 带有设计的 Rails 应用程序无法在 heroku 上部署(来自 github sorces)
- android - 自定义域、深层链接、Firebase 动态链接和应用链接如何协同工作?
- python - 如何从表 args 为 mssql 方言关闭自动增量