2017-09-27 113 views
-1
  1. 所以我想创建一个函数,它将一个数值向量作为参数,并采用最大值和最小值并计算其差值。我有这一点至今:R - 如何创建一个数值向量作为参数的函数

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

功能的工作原理,但我敢肯定有R中写这更方便的方式

  • 我想添加第二个参数,称为noNAs,它定义了函数处理其向量缺失值(NAs)的方式,我希望在noNAs = TRUE时计算它的最大值和最小值之差包括NA值。我知道有一种方法可以用na.rm来实现,但我不知道如何。我想这样的,但它似乎并没有工作:

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

  • +2

    想要存档的内容可以用'diff(range(x))'完成。对于第二个问题:这是真正基本的东西,涵盖了字面上的任何入门级R教程,这是问这种类型的问题的错误网站。 –

    +0

    这应该适用于第二个问题'minmax < - function(v,noNAs = T){max(v,na.rm = noNAs)-min(v,na.rm = noNAs)}' – Niek

    +0

    嗯,我无法找到我寻找的代码或任何相似的代码。我敢肯定,如果它让你感到非常困扰,那么有一种方法可以阻止我未来的评论! Niek:谢谢你的帮助,Apparenlty我非常接近正确的答案,但我不能知道如何强制na.rm到线上。 –

    回答

    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)) 
    } 
    

    最后,我建议你不到位的TRUE使用TT是可以重新分配的变量,因此并不总是保证为TRUE。另一方面,TRUE是一个保留字,不能被重新分配。因此,使用它是一个更安全的逻辑值。

    +0

    谢谢!为了学习编写R代码,我试图学习编写R代码,并帮助我做得更好,并自动化一些我想知道的事情。这些提示总是有用的。我已经掌握了这些命令的基本知识,但将它们全部合并为一个对我来说是迄今为止最困难的部分。我真的很熟悉这个帮助! –

    相关问题