簡體   English   中英

使用函數參數更改R輸出對象名稱

[英]Changing R output object names with function arguments

我是R的新手,所以如果我的語言不准確,請原諒(並糾正)我。

我已經編寫了一個程序來加載數據,創建列聯表(使用xtabs),在其上運行一些外部函數以及輸出結果表。 我已經在完整的數據集上運行了代碼,並且想在我的數據子集上運行相同的代碼。 我將代碼包裝為一個函數,並希望能夠將子集名稱 (SUBNAM)和子集的表達式 (SUBEXP)作為函數中的參數傳遞,例如:

HCACC <- function (SUBNAM, SUBEXP) {  
   CM.SUBNAM <- as.matrix(
      xtabs(~HC_map+HC_obs, data=VVD
      , drop.unused.levels=FALSE, sparse=TRUE
      , subset=(SUBEXP)
      ) )

   AKw.SUBNAM <- kw(CM.SUBNAM, wtHC)
   USER.SUBNAM <- as.data.frame(AKw.SUBNAM$user.wa)
   write.csv(HCACC.SUBNAM, file="HCACC.SUBNAM.csv", row.names=TRUE)
}

HCACC(2013, Year == 2013)
HCACC(JMDR, Observer == "JMDR")

(最后三行是我想要SUBNAM的示例,實際上有40個實例)

我想結束於CM.2013,CM.JMDR等,而不必重復復制/粘貼和查找/替換代碼。

似乎必須有一種方法可以執行此操作,但是我嘗試的方法沒有用,並且谷歌搜索沒有任何進展(但我懷疑我可能一直在問錯問題)。 任何提示或指示,將不勝感激。

*EDIT*為了明確起見,我對將子集名稱和表達式作為參數傳遞給函數的其他方法持開放態度。 我只想能夠在不同的子集上重復分析/編碼很多次,並相應地命名輸出。 感謝您的見解!

首先,您的代碼中似乎有一個錯誤(錯誤)。 您創建了數據幀USER.SUBNAM,但是嘗試寫出不存在的HCACC.SUBNAM。 另外,您的評論還說,您希望使用文件名CM.2013和CM.JMDR,但是您的代碼似乎正在嘗試使用HCACC.2013和HCACC.JMDR。

看起來,您實際上真正需要使用SUBNAM的唯一地方是輸出文件名。 函數中的所有變量都是臨時變量,不需要在每次調用函數時使用不同的名稱。 因此,我認為您想要的是:

    HCACC <- function (SUBNAM, SUBEXP) {  
       CM <- as.matrix(xtabs(~HC_map+HC_obs, data=VVD, 
        drop.unused.levels=FALSE, sparse=TRUE,
        subset=(SUBEXP)
          ) )

       AKw <- kw(CM, wtHC)
       HCACC <- as.data.frame(AKw$user.wa)
       write.csv(HCACC, file= paste("HCACC.", SUBNAM, ".csv", sep=""),  
        row.names=TRUE)
    }

    HCACC(2013, Year == 2013)
    HCACC(JMDR, Observer == "JMDR")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM