0

グラフ関数を作成しました:

plotfun = function(dat, pos, tetrad.name=NULL, snp.cols=c("blue", "red", "lightgray")){
    plot(1,1, type="n", xlim=c(min(pos), max(pos)), ylim=c(0.75,4.25), yaxt="n", xaxt="n", main=paste("CCT6 -",tetrad.name), xlab="", ylab="", bty="n", cex=.75)
    abline(h=1:4, lty="dotted")
    tmpnull = sapply(1:4, function(n) points(pos, rep((4:1)[n],length(pos)), col=snp.cols[dat[n,]], pch=16))
    mtext(c("a", "b", "c", "d"), side=2, line=0.5, at=4:1, las=1, cex=.5)
}

このグラフ化関数を使用して、より大きなリスト(xこの例では)からインデックスを付けた行列のサブセットをグラフ化しようとしています。私はsapplyすべての行列を個別にグラフ化するために使用しています。

sapply(1:69, function(n) plotfun(dat=matrix.transform(x[[n]]), pos=cct6.pos, tetrad.name= n ))

私の問題は、プロットのタイトルを各マトリックスに添付されたリスト番号として読み取る方法がわからないことです。代わりに、それらにラベルを1:69付け、インデックス付き入力からの情報を失います。たとえば、最初の入力がcct6[[35]]プロットのタイトルを読みたく"CCT6-35"ない場合"CCT6-1"

これが基本的な質問である場合は申し訳ありません。私はこれに固執しています...

4

1 に答える 1

1

main= ...次のスニペットを使用して、「plotfun」内のプロット呼び出しの引数を 1 行変更します。

main=bquote("CCT6-*.(tetrad.name))

簡単なテストケースでこれを試したところ、遅延評価の側面が原因であることがわかりました (エラーではなく、プロットに適切にラベルを付けることができませんでした。 force() cal を追加すると、その問題が修正されました。これら 2 つを比較してください。

for(n in 1:2) plot(1,1,main=bquote("N="*.(n)))

for(n in 1:2) {force(n); plot(1,1,main=bquote("N="*.(n)))}
于 2012-04-30T15:57:55.730 に答える