将参数传递给热图内的add.expr中的函数。2

将参数传递给热图内的add.expr中的函数。2,r,line,scope,heatmap,R,Line,Scope,Heatmap,我正在使用heatmap.2函数(gpr包)生成集群热图。我想使用add.expr参数在图像的可变位置添加一条垂直线 比如说, xx=replicate(10, rnorm(10)) # some random matrix heatmap.2(xx, trace="none", add.expr=abline(v=c(3.5,6.5), lwd=3)) 这很有效。问题是,如果我将行位置作为变量传递,它将不起作用: linePosition = c(3.5,6.5) hea

我正在使用
heatmap.2
函数(gpr包)生成集群热图。我想使用
add.expr
参数在图像的可变位置添加一条垂直线

比如说,

xx=replicate(10, rnorm(10)) # some random matrix
heatmap.2(xx, trace="none",
          add.expr=abline(v=c(3.5,6.5), lwd=3))
这很有效。问题是,如果我将行位置作为变量传递,它将不起作用:

linePosition = c(3.5,6.5)
heatmap.2(...,
          add.expr=abline(v=linePosition, lwd=3))
看起来像是从heatmap.2函数内部调用了
abline
函数,但没有看到外部变量

请告知最好的方法是什么


当然,除了我自己的函数外,我不想修改任何函数。

这似乎增加了两条粗线:

heatmap.2(xx,
       add.expr=eval( abline(v=linePosition, lwd=3))) 

对不起,当时没有投票并接受你的答案。不知怎的,我忽略了它。不管怎样,现在看来不需要eval了,可能是在R或heatmap.2更新之后。这在R4.0.3中似乎不再有效了。我最好使用abline(v=dynGet(“linePosition”,inherits=TRUE),lwd=3)在调用帧中查找'linePosition'的值。不太漂亮,可能不可移植:-/在R3.6.3中,eval调用运行良好,OpNow worsk的原始版本。因此,在过去7年的某个时候,《gplots》的作者可能加强了对论点的评估。