【问题标题】:R median function from scratch从零开始的 R 中值函数
【发布时间】:2021-06-13 01:48:15
【问题描述】:

我是 R 初学者,我尝试从头开始制作中值函数。

这是我的代码:

mymedian <- function(x) {
  len <- length(x)
  sorted <- sort(x)
  if (len %% 2 == 0) {
    med1 <- sorted[len / 2]
    med2 <- sorted[(len + 1) %/% 2]
    result <- sorted[med1 + med2 / 2]
    return(result)
  } else {
    result <- sorted[(len + 1)/2]
    return(result)
  }
}

我得到“NA”输出。我找不到问题出在哪里。

【问题讨论】:

  • 您的子集太早了,在第 5 行和第 6 行尝试med1 &lt;- len/2。第 8 行可能缺少括号。
  • 仔细看看,比较第 7 行和第 10 行。
  • @jay.sf 即使使用您编辑的代码,我仍然会得到“NA”。我试图将 2 个向量与 append 函数合并,这可能是问题吗?
  • 我只是把你的代码用空格分开了一点,没有真正的编辑。

标签: r median


【解决方案1】:

主要问题是您尝试使用非整数(例如 168.5)索引您的 sorted 向量。将您的功能与此进行比较:

mymedian <- function(x){
  len <- length(x)
  sorted <-sort(x)
  if(len%%2==0){
    i <- len/2
    med1<-sorted[i]
    med2 <- sorted[i+1]
    result <- sum(med1,med2)/2
    return(result)
  }else{
    result<-sorted[(len+1)/2]
    return(result)
  }
}

【讨论】:

  • 谢谢!它解决了我的问题,我明白为什么它不起作用了。
  • @jay.sf 如果我做错了真的很抱歉,下次我一定会看看指南然后问我的问题。
  • @jay.sf 谢谢!很高兴了解社区的立场。
  • @Umutcan 我实际上是说布赖恩 ;)
猜你喜欢
  • 2017-06-21
  • 2019-02-25
  • 1970-01-01
  • 2011-07-04
  • 1970-01-01
  • 2012-12-29
  • 1970-01-01
  • 2017-01-28
  • 1970-01-01
相关资源
最近更新 更多