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'是什么? –