heatmap.2 передать параметры в add.expr - PullRequest
0 голосов
/ 22 сентября 2018

Я пытаюсь создать тепловую карту (используя heatmap.2) с вертикальными линиями на ней.
Проблема в том, что я хочу передать координаты x линий в качестве параметра.

Упрощенный пример:

heatmp <- function(mat, lns) {
  lns <- lns * 2 
  heatmap.2(mat, add.expr = eval(abline(v =lns))
}
matrix <- matrix(rnorm(100), nrow = 10)
line2 <- c(2, 4)

heatmp(matrix, line2)

Я получаю сообщение об ошибке:

Error in int_abline(a = a, b = b, h = h, v = v, untf = untf, ...) : 
object 'lns' not found

Проблема в том, что add.expr выполняет поиск только в глобальной среде.
У stat::heatmap была та же проблема, но она была давно исправлена:
https://bugs.r -project.org / bugzilla3 / show_bug.cgi? Id = 16583

То же самоепроблема была опубликована здесь:
Передача параметра в функцию в add.expr внутри heatmap.2 В этом посте предлагаемое исправление было:

lns= c(2,4)
heatmap.2(...,add.expr=eval(abline(v=linePosition, lwd=3)))

Это, однако, не работает дляя.
Я также не ожидал этого, так как код HeatMap.2 уже использует именно это:

if (!missing(add.expr)) 
    eval(substitute(add.expr))

У кого-нибудь есть предложения?
Я думаю, что мне не хватает некоторых знаний оокружение и поиск в них.Заранее спасибо за ваше время!

...