1

一度に 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、サンプル、開始、終了の列を持つテーブルがあり、各行は異なる 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

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 に答える