2014-09-06 25 views
1

我想編寫一個函數,通過在一個目錄的直接子目錄中的所有文件,然後運行迭代自定義編寫的函數從文件的文本中提取特徵:如何保存R中省略號的內容以用於深度嵌套函數調用?

load.samples <- function(path = ".", ...) { 
    dirs <- dir(path, full.names = TRUE)[file.info(dir(path, full.names = TRUE))$isdir] 
    lapply(dirs, function(p) { 
    lapply(dir(p, full.names = TRUE), function(f) { 
     text <- readChar(f, file.info(f)$size) 
     extractFeatures(text, ...) #I want this call to pass along the extra parameters to load.samples 
    }) 
    }) 
} 

我試圖讓任何傳遞給load.samples函數的附加參數傳遞給extractFeatures函數。但是,上面的代碼顯然不起作用,因爲不是直接調用,而是調用extractFeatures包裝在兩個嵌套函數中,這兩個嵌套函數通過對lapply的兩次嵌套調用進行調用,每次嘗試通過時都會得到一個未使用的參數錯誤任何額外的參數load.samples

什麼是最簡單的方法來保存要在這種嵌套函數中使用的省略號的值?

+0

你究竟如何調用這個函數?爲什麼失敗如此明顯?像這樣的東西似乎工作得很好:'mycall <-function(a,b,...)粘貼(a,b,...); (a,b,...){sapply(a,function(a){sapply(b,function(b){mycall(a,b,...)})\t}}}; f(1:3,3:4,「Hi」)' – MrFlick 2014-09-06 22:03:39

+0

基於janos的回答,它看起來像我認爲我的代碼「顯然是錯誤的」,顯然是錯的! 這是我正在使用的調用(現在工作要感謝janos):'load.samples(path =「〜/ projects/linguist/samples」,ncol = 10)',其中'ncol'打算傳遞到'extractFeatures'功能。 – bskaggs 2014-09-06 22:06:17

+1

有幾個包含'extractFeatures'功能的軟件包。 ('sdef','pathClass','NMF','imageHTS')。爲了再現性,請您指定您正在使用哪一個。 – 2014-09-07 05:22:36

回答

1

第一行改成這樣:

load.samples <- function(..., path = ".") { 

訣竅是,...應該來的常規參數後,但之前命名參數。

+0

完美,謝謝! – bskaggs 2014-09-06 21:57:46

+0

我想很難判斷這個意圖是否讓'path'成爲第一個具有默認值的位置值,或者它是一個可選的命名參數。從理論上講,如果你希望'path'成爲第一個具有默認值的位置參數,那麼第一種語法應該可以工作。 – MrFlick 2014-09-06 22:08:51