嵌套 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
)
我正在尝试 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
)