1

我正在尝试使用我在 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
4

2 回答 2

3

使用mapply

    mapply(printTiff, table[,1], table[,2], table[,3] ,table[,4])
于 2013-10-17T21:19:54.137 回答
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])
于 2013-10-17T21:47:40.533 回答