R if-else不起作用

时间:2011-08-03 20:39:11

标签: r

这个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 "}"

5 个答案:

答案 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