尝试使用R

时间:2019-12-15 16:14:07

标签: r

我知道R中有一个内置函数可以计算中位数,但是我被要求自己创建一个函数,这有一些问题。这是我想出的:

My.median<-function(X){

  n<-X[order(X)]        #in order to make the list ordered

  if (length(n)%%2 == 0){  #if even number I want R to take the two numbers in the middle and divide

    median_X= (X[(length(n)-1)/2] + (X[length(n)/2]))/2

  }else{

    median_X=X[length(n)/2]

  }

  print(median_X)

}

当列表中的数字不均匀时,该功能可以正常工作,但是当列表中的数字为偶数时,该功能将无法正常工作。有人可以看到问题或给我小费吗?

1 个答案:

答案 0 :(得分:1)

这有效:

My.median<-function(X){

  n<-X[order(X)]        #in order to make the list ordered

  if (length(n)%%2 == 0){  #if neven number I want R to take the two numbers in the middle and divide

    median_X= (n[length(n)/2] + n[length(n)/2+1])/2

  }else{

    median_X=n[(length(n)+1)/2]

  }

  median_X

}

您有两个初始错误:

  1. 创建排序后的向量n,然后从X而不是n进行子集设置。
  2. 已排序向量的子集索引太低。