2017-09-27 39 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代碼,並幫助我做得更好,並自動化一些我想知道的事情。這些提示總是有用的。我已經掌握了這些命令的基本知識,但將它們全部合併爲一個對我來說是迄今爲止最困難的部分。我真的很熟悉這個幫助! –

    相關問題