嵌套 if else-if 在 R 中抛出 "unexpected error"

Nested if else-if throwing "unexpected error" in R

我正在尝试 select 来自数据集 va 的列 sn_r,其中 va$VACHART==。如果满足此条件,则我想在使用公式 5+50*log10(va$sn_r) 计算值时将该值存储在新列中 如果条件不满足,则在 sn_r 的不同范围值中搜索并存储它。

在 R 中,我尝试使用 if、else if 语句,但在“}”中出现意外的“}”错误

if(va$VACHART=="1" & va$sn_r>"0.025"){
va$ETDRS_R = 85+50*log10(va$sn_r)
}else if(va$VACHART=="1" & "0.020"< vd$sn_r <="0.025"){
va$ETDRS_R = 5
}else if(va$VACHART=="1" & "0.015"< vd$sn_r <="0.020"){
va$ETDRS_R = 3
}else if(va$VACHART=="1" & "0.005"< vd$sn_r <="0.015"){
va$ETDRS_R = 1
}else {#if(va$VACHART=="1" & "0"< vd$sn_r <="0.005"){
va$ETDRS_R = 0
}

if 中的几个条件是无效语法,例如

"0.020" < vd$sn_r <= "0.025"

这必须表示为:

vd$sn_r > "0.020" & vd$sn_r <= "0.025"

也就是说,我什至不清楚这些列实际上不是数字。无论如何,我们 可以 尝试更正您的代码,但更好的方法是 dplyr 包中的 case_when

va$ETDRS_R <- case_when(
    va$VACHART == 1 & va$sn_r > 0.025 ~ 85+50*log10(va$sn_r),
    va$VACHART == 1 & va$sn_r > 0.020 ~ 5,
    va$VACHART == 1 & va$sn_r > 0.015 ~ 3,
    va$VACHART == 1 & va$sn_r > 0.005 ~ 1,
    TRUE ~ 0
)