【发布时间】:2014-02-08 23:10:24
【问题描述】:
我有一个看起来像这样的数据框-
> dpd
md mean sd fsf dii n
2 77.5 0.02827206 0.05761423 0.8382353 29.648895 136
3 120.0 0.07058824 0.04696682 0.5882353 8.333333 17
NA NA NA NA NA NA NA
... ...
NA.8 NA NA NA NA NA NA
13 650.0 0.00500000 NA 1.0000000 200.000000 1
NA.9 NA NA NA NA NA NA
.. ...
NA.12 NA NA NA NA NA NA
18 900.0 0.00500000 NA 1.0000000 200.000000 1
我想以这样的方式制作一个 if-else 语句,只有当数据框中的所有 'dii' 值 >= 20 并且 'fsf' >= 0.8 时,该函数才会打印“GOOD”,否则“你有问题!”。所以我尝试了这样的事情-
if (dpd$fsf[!is.na(dpd$fsf)] > 0.8 & dpd$dii[!is.na(dpd$dii)] >= 20)
print("GOOD") else print("You have problem!")
数据框清楚地表明,第 3 行的值不符合这两个条件,但 R 只考虑第一个元素,如下所示:
[1] "GOOD"
Warning message:
In if (dpd$fsf[!is.na(dpd$fsf)] > 0.8 & dpd$dii[!is.na(dpd$dii)] >= :
the condition has length > 1 and only the first element will be used
如何改进我的条件语句,使其显示“您有问题!”另外,有什么方法可以用我选择的颜色打印文本“GOOD”?
【问题讨论】:
标签: r if-statement dataframe conditional-statements