这个if-else在我的R程序中有什么问题?
if(is.na(result)[1])
print("NA")
else
coef(result)[[1]]
我收到了一个错误:
> if(is.na(result)[1])
+ print("NA")
> else
Error: unexpected 'else' in "else"
> coef(result)[[1]]
然后我在if和else周围添加了大括号,现在我收到了这个错误:
> if(is.na(result)[1]) {
+ print("NA")
Error: unexpected input in:
"if(is.na(result)[1]) {
¬"
> } else {
Error: unexpected '}' in "}"
> coef(result)[[1]]
Error: unexpected input in "¬"
> }
Error: unexpected '}' in "}"
答案 0 :(得分:22)
这是你缺乏花括号。试试
if(is.na(result)[1]) {
print("NA")
} else {
coef(result)[[1]]
}
当你的源码同时输出整个文件但逐行解析时(例如当你在提示符处输入时),你必须告诉R更多的代码即将来临,这一点更为重要。
答案 1 :(得分:8)
我认为您的问题已通过此错误消息发出信号:
"if(is.na(result)[1]) {
¬"
注意奇怪的小符号?您已经获得了一个非打印字符,看起来像旧的IBM终端标记之一。您的LOCALE字符串或键盘映射或您从Internet上获得的代码可能会出现问题。很难说,但你绝对应该试图通过退缩来摆脱它们/
答案 2 :(得分:4)
如果没有花括号,if ... else ...
结构应仅在一行上:
if(is.na(result)[1]) print("NA") else coef(result)[[1]]
答案 3 :(得分:2)
如果你只有一个条件和两个结果,那么在语法上更容易使用ifelse()
ifelse(is.na(result)[1],
print("NA"),
coef(result)[[1]]
)
答案 4 :(得分:0)
这对我来说没有错误
x <- 1:5
result <- lm(c(1:3,7,6) ~ x)
if(is.na(result)[1]) {
print("NA")
} else {
coef(result)[[1]]
}
并制作
[1] -0.7