如何在R中使用不同的参数多次运行函数?

时间:2013-10-17 21:14:04

标签: r

我正在尝试使用我在R中编写的函数同时制作一堆图,以便一次制作一个图。我的函数调用多个参数,包括一个FUN参数,该参数指定每个样本应该使用哪个绘图函数。

我想将一个表/数据框读入R,然后在每一行上运行相同的函数,其中每一行指定该运行的参数。

我的功能如下:

printTiff <- function(FUN, sample, start, end) {
  tiff(paste(sample,".tiff", sep=""), compression="lzw",width=892,height=495)
  g <- FUN(sample,start,end)
  dev.off()
}

我有一个包含FUN,sample,start和end列的表,其中每一行应该以不同的tiff结束。我尝试过使用do.call,但我似乎无法正确使用它。我有几百个样本,所以我想避免每次运行都改变参数。

表格样本:

      FUN      sample    start      end
1 T7Plots   sample343 27520508 27599746
2 C9Plots   sample347 27522870 27565523
3 C9Plots   sample345 27535342 27570585

2 个答案:

答案 0 :(得分:3)

使用mapply

    mapply(printTiff, table[,1], table[,2], table[,3] ,table[,4])

答案 1 :(得分:2)

您可以使用match.fun按名称查找功能,然后就可以使用它。

printTiff <- function(FUN, sample, start, end) {
  FUN <- match.fun(FUN)
  paste(sample, FUN(start), end);
}

table <- read.table(header=TRUE, stringsAsFactors=FALSE, text="
FUN      sample    start      end
T7Plots   sample343 27520508 27599746
C9Plots   sample347 27522870 27565523
C9Plots   sample345 27535342 27570585
")


T7Plots <- `-`
C9Plots <- function(x) 1/x

然后我们可以像@alexis_laz一样使用mapply

mapply(printTiff, table[,1], table[,2], table[,3] ,table[,4])