所以我想创建一个以数值向量作为参数的函数,并获取最大值和最小值并计算它们之间的差异。到目前为止,我已达到这一点:
v <- as.numeric()
minmax <- function(v){max(v)-min(v)}
minmax (v)
该功能有效,但我确定有一种更方便的方式在R
中写这个我想添加一个名为noNAs的第二个参数,它定义了函数如何处理它的向量缺失值(NAs),我想拥有它,所以当noNAs = TRUE时它会计算max和min之间的差值而不用包括NA值。我知道有一种方法可以用na.rm实现这个,但我不知道怎么做。我这样想,但它似乎不起作用:
minmax <- function(v,noNAs=T){max(v)-min(v){na.rm=TRUE}}
答案 0 :(得分:1)
通过识别na.rm
是一个控制缺失值处理方式的参数,你几乎解决了自己的问题。现在,您只需将此知识应用于min
和max
。
函数的好处是,您可以将参数传递给其他函数,就像传递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
代替TRUE
。 T
是一个可以重新分配的变量,因此并不总是保证为TRUE
。另一方面,TRUE
是保留字,不能重新分配。因此,使用它是一个更安全的逻辑价值。