我知道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)
}
当列表中的数字不均匀时,该功能可以正常工作,但是当列表中的数字为偶数时,该功能将无法正常工作。有人可以看到问题或给我小费吗?
答案 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
}
您有两个初始错误:
n
,然后从X
而不是n
进行子集设置。