Я пытаюсь создать тепловую карту (используя 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))
У кого-нибудь есть предложения?
Я думаю, что мне не хватает некоторых знаний оокружение и поиск в них.Заранее спасибо за ваше время!