2013-04-22 59 views
0

有沒有人知道是否可以定義一個自己的函數,該函數將未定的許多參數作爲輸入?我的具體問題是我想寫一個自己的rbind函數,它能夠用類似的rownames綁定data.frames(並且只分配新的數字rownames)。具有未確定許多參數的R函數

這裏這種做法顯然是錯誤的,但我希望你明白我的問題/想法:

rbindDF <- function(x){ 
N <- length(x) 
# Join x[1] and x[2] 
... 
# Join x[n-1] and x[n] 
} 

我試圖找到,它是如何做到如在rbindsum,但我不記得如何從.Internal函數中查看源代碼。

使用呼叫rbindDF(list(...))可能是一種妥協,但如果可以以這種方式完成,如果存在三個數據幀rbindDF(data1,data2,data3)並且例如,如果是這樣的兩個rbindDF(data1,data2)

非常感謝任何提示!

+0

看看rbind.data.frame .... – EDi 2013-04-22 13:04:26

+0

Ups,對不起,你是對的,rbind是否這樣做......但是@MadScone猜到了,這只是學習的動力,如何寫這樣一個R一般功能。 – 2013-04-22 13:22:40

回答

3

您可以使用省略號運算符(...)。例如:

rbindDF <- function(...) { 

    df_list <- list(...) 
    do.call(rbind, df_list) 

} 

這將允許任何數目的數據幀在傳遞:

rbindDF(df1, df2, df3) 

我把它這個問題只是關於是否需要傳遞一個參數數目未知的,而不是內容的功能本身。

+0

太快了,謝謝!我沒有想過使用省略號運算符將參數內部傳遞給列表,非常好!到目前爲止,我只用它來繪製函數中的圖形參數。是的,我有一個具體的'rbind'問題,但有興趣總體如何解決這個問題。 – 2013-04-22 13:12:16