English · PDF 304
x == 2 #> [1] FALSE x - 2 #> [1] 4.44e-16
请改用 dplyr::near() 进行比较,如第 46 页“比较”一节所述。
另外请记住,x == NA 不会产生任何有用的结果!
你可以将多个 if 语句串联在一起:
if (this) { # 执行那个操作 } else if (that) { # 执行其他操作 } else { # }
但如果你最终得到一串非常长的链式 if 语句,就应该考虑重写。一个有用的技巧是 switch() 函数。它允许你根据位置或名称来执行选定的代码:
#> function(x, y, op) { #> switch(op, #> plus = x + y, #> minus = x - y, #> times = x * y, #> divide = x / y, #> stop("Unknown op!") #> ) #> }
另一个通常可以消除长串 if 语句的有用函数是 cut()。它用于将连续变量离散化。
if 和 function 之后(几乎)总是应该紧跟花括号({}),并且其中的内容应缩进两个空格。这样通过浏览左边的空白边距,就能更容易地看出代码的层次结构。
左花括号绝不应该单独占一行,并且其后总是应该另起一行。右花括号应该