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”中的绘图调用中更改您的论点:

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

当我用一个简单的测试用例尝试这个时,我发现惰性评估方面导致(不是错误,而是未能正确标记图。添加 force() 校准解决了这个问题。比较这两个:

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 回答