1
我正在編寫一個實用程序來對一組數據運行一系列測試。我有data.frame中的數據,並希望對每行數據運行N個測試。 (道歉,如果我的術語不是全部在那裏:我一直在使用R所有五個小時)。遍歷R中的函數列表
在我的實用程序中,我想將測試拆分到不同的文件中,並在主程序中加載所有這些測試,併爲每個data.frame行運行一次。下面是我在做什麼,以源相關文件:
file.sources = list.files(pattern="validator-.*.R$")
sapply(file.sources,source,verbose = TRUE)
這個效果很好,如果我這樣做是每一個匹配的文件:
b <- function(a) {
if(grep("^[[:blank:]]*$", a)) {
return(FALSE)
} else {
return(TRUE)
}
test.functions <- append(test.functions, b)
然後,我結束了一個test.function
列表準確地包含所有要運行的測試功能,但現在這是我卡住的地方。我嘗試了sapply()
的變體,我認爲do.call()
也是相關的。這是我目前的嘗試:
process.entry <- function(a) {
lapply(test.functions,do.call,a)
}
sapply(all.data,process.entry)
我在這裏的嘗試是建立一個函數,它接受一個數據行作爲它的參數,遍歷test.functions
並調用do.call()
數據作爲參數的函數和行。這似乎並不十分工作,拋出的錯誤是:
Error in FUN(X[[i]], ...) : second argument must be a list
不過,我並不完全知道在哪裏發生這種錯誤,並且很可能是:有做其他,清潔,方法是我打算!
第二個參數的'class'是什麼? –