我正在尝试在r中进行编码以找到相应的径流值,其中降雨超过了特定阈值。问题是我的for代码要么只接受一个元素,要么不存储任何迭代。我不断收到错误消息,即参数长度> 1,仅使用了一个元素 它会继续打印代码中的所有值,或者只是对最后一个值进行评估。 我想在数据框中逐行测试条件
我尝试过for循环,因为我不能只专注于内置函数,所以它必须是for循环。即使我更改了值,它仍会继续打印代码中的所有值
`
for(row in 1:nrow(post)){
Rainfall <- post[row,"Runoff"]
Date <- post[row, "Day"]
if (Rainfall.m3[nrow(post)] > 1000){
print(paste("on", Day,"runoff was",post$Runoff))
}
else
{print("")
}`}
}
这是我的数据
Day OB.NO Rainfall.m3 Comulative.Rainfall Runoff Comulative.Runoff Computed.Runoff Comulative.Computed
46 28-Dec 46 6177.3 88052.7 1567.000 8105.812 575.72436 8206.51164
47 13-Jan 47 3210.8 91263.5 376.650 8482.462 299.24656 8505.7582
48 19-Jan 48 1500.7 92764.2 96.156 8578.618 139.86524 8645.62344
49 20-Jan 49 1116.8 93881.0 293.412 8872.030 104.08576 8749.7092
50 23-Jan 50 1500.7 95381.7 78.744 8950.774 139.86524 8889.57444
51 5-Feb 51 3036.3 98418.0 192.096 9142.870 282.98316 9172.5576
52 6-Feb 52 1186.6 99604.6 31.164 9174.034 110.59112 9283.14872
53 12-Mar 53 1291.3 100895.9 128.172 9302.206 120.34916 9403.49788
54 20-Mar 54 802.7 101698.6 127.404 9429.610 74.81164 9478.30952
55 29-Mar 55 628.2 102326.8 8.226 9437.836 58.54824 9536.85776
56 9-Apr 56 732.9 103059.7 56.490 9494.326 68.30628 9605.16404
答案 0 :(得分:0)
我承认我很难理解这个问题的背景,但是我有一种直觉,也许我会很幸运并有所作为。
您的循环遍历数据帧,单独处理每一行。我怀疑这条线有问题。
print(paste("on", Day,"runoff was",post$Runoff))
我认为“ post $ Runoff”引用数据框中的整个Runoff列。这可能就是为什么它不断打印。我认为您只需要选择一行即可。
现在您已经做了几行了。
Rainfall <- post[row,"Runoff"]
因此,为什么不打印该变量呢?您已经拥有它。
print(paste("on", Day,"runoff was",Rainfall))
希望有帮助。我已经尽力了。