R - 如何使用数字向量作为参数创建函数

时间:2017-09-27 10:55:52

标签: r function vector

  1. 所以我想创建一个以数值向量作为参数的函数,并获取最大值和最小值并计算它们之间的差异。到目前为止,我已达到这一点:

    v <- as.numeric() minmax <- function(v){max(v)-min(v)} minmax (v)

  2. 该功能有效,但我确定有一种更方便的方式在R

    中写这个
    1. 我想添加一个名为noNAs的第二个参数,它定义了函数如何处理它的向量缺失值(NAs),我想拥有它,所以当noNAs = TRUE时它会计算max和min之间的差值而不用包括NA值。我知道有一种方法可以用na.rm实现这个,但我不知道怎么做。我这样想,但它似乎不起作用:

      minmax <- function(v,noNAs=T){max(v)-min(v){na.rm=TRUE}}

1 个答案:

答案 0 :(得分:1)

通过识别na.rm是一个控制缺失值处理方式的参数,你几乎解决了自己的问题。现在,您只需将此知识应用于minmax

函数的好处是,您可以将参数传递给其他函数,就像传递v一样。以下将定义您的意愿:

minmax <- function(v, noNA = TRUE){
  max(v, na.rm = noNA) - min(v, na.rm = noNA)
}

但是,我建议您使用熟悉的参数名称

minmax <- function(v, na.rm = TRUE){
  max(v, na.rm = na.rm) - min(v, na.rm = na.rm)
}

如前所述,您可以使用

轻微简化代码
minmax <- function(v, na.rm = TRUE){
  diff(range(v, na.rm = na.rm))
}

最后,我建议您不要使用T代替TRUET是一个可以重新分配的变量,因此并不总是保证为TRUE。另一方面,TRUE是保留字,不能重新分配。因此,使用它是一个更安全的逻辑价值。