将na.rm作为参数添加到R中的自定义函数

时间:2019-07-04 07:56:19

标签: r na

我写了一个Fun,用于规范从0到5的一组数字。 但是我将NA作为我的数据的一部分,希望Fun可以跳过它们并移至下一个值。

我尝试了以下代码:

IDNO<-1:11
Scores<-c(1:10,NA)
ScoreDF<-as.data.frame(cbind(IDNO,Scores))
Normalize.Final.Score.fun <- function(x){
  5*(x-min(x))/(max(x)-min(x))
}

ScoreDF<-ScoreDF %>% 
  mutate(BotanicalVal=Normalize.Final.Score.fun(Scores))

我希望输出与运行此行一样:

ScoreDF$ExpectedBotanicalVal<- c(Normalize.Final.Score.fun(Scores[1:10]),"NA")
  

[1]“ 0”“ 0.555555555555556”“ 1.11111111111111” [4]   “ 1.66666666666667”“ 2.22222222222222”“ 2.77777777777778” [7]   “ 3.33333333333333”“ 3.88888888888889”“ 4.44444444444444” [10]“ 5”
  “ NA”

我只得到NA。 预先感谢您的帮助

1 个答案:

答案 0 :(得分:0)

只需将na.rm = TRUE添加到您的通话中

Normalize.Final.Score.fun <- function(x) {
  5 * (x - min(x, na.rm = TRUE)) / (max(x, na.rm = TRUE) - min(x, na.rm = TRUE))
}