在R中使用if / else和函数

时间:2014-10-31 14:48:03

标签: r function if-statement

我曾尝试编写一个简单的代码来计算中位数但我收到了一个错误。 这就是我写的

中位数< -function(x){odd.even< -length(x)%% 2 if(odd.even = = 0)(sort(x)[length(x)/ 2] + sort(x) [1 + length(x)/ 2])/ 2 else(sort(x)[ceiling(length(x)/ 2)])}

这是我得到的错误

错误:“中位数< -function(x){odd.even< -length(x)%% 2 if”

中意外'if'

由于

1 个答案:

答案 0 :(得分:2)

试试这个(你忘了括号{)

median<-function(x){

  odd.even<-length(x)%%2 

  if (odd.even == 0){    
    (sort(x)[length(x)/2]+sort(x)[1+length(x)/2])/2 
  } else {
    (sort(x)[ceiling(length(x)/2)])
  }

}

正如所指出的,如果您不想使用支架,您可以随时使用if语句中的新行:

median<-function(x){
  odd.even<-length(x)%%2 
  if (odd.even == 0) (sort(x)[length(x)/2]+sort(x)[1+length(x)/2])/2 else (sort(x)[ceiling(length(x)/2)])
}

最后一个返回(x)可能有助于阅读过程,虽然它不是强制性的。