Я пытаюсь сделать тепловую карту с Rshiny.Пользователь должен иметь возможность выбрать 2 переменные: время и направление.В зависимости от этого тепловая карта будет меняться.
Когда я фиксирую значение для времени и направления, мой код работает.Когда я пытаюсь использовать реактивный ввод, он не работает.
сообщение об ошибке: Ошибка в .getReactiveEnvironment () $ currentContext (): Операция не разрешена без активного реактивного контекста.(Вы пытались сделать что-то, что можно сделать только из реактивного выражения или наблюдателя.)
JSd_inter - это функция, которую я могу показать вам при необходимости.В первом примере я зафиксировал время с помощью "T1" и направление с помощью "оба" Эти два примера представляют собой 2 разных способа, которыми я использовал для создания своего фрейма данных для моей тепловой карты.пример 1 работает, но я не могу изменить значение, пример 2 не работает.В части 3 / вы можете найти код, который я использую для построения моей тепловой карты
idt <- as.vector(unique(data$contratid))
n= length(idt)
a <- matrix(0, n,n)
colnames(a) <- idt
rownames(a) <- idt
for (i in 1:n) {
for (j in 1:n) {
a[i,j] <- JSD_inter(data,20,"T1","both",idt[i],idt[j])
}}
2-й пример, который не работает (даже если я использую в своей функции input $ timechoice вместо time (), он все еще остается верным).работа)
time <- reactive({input$timechoice})
direction<- reactive({input$dirchoice})
idt <- as.vector(unique(data$contratid))
n= length(idt)
a <- matrix(0, n,n)
colnames(a) <- idt
rownames(a) <- idt
for (i in 1:n) {
for (j in 1:n) {
a[i,j] <- JSD_inter(data,20,time(),direction(),idt[i],idt[j])
}}
Часть 3 / код для построения тепловой карты (так как пример 1 работает, я не думаю, что проблема отсюда)
reorder_cormat <- function(cormat){
# Utiliser la corrélation entre les variables
# comme mésure de distance
dd <- as.dist((1-cormat)/2)
hc <- hclust(dd)
cormat <-cormat[hc$order, hc$order]
}
# Obtenir le triangle supérieur
get_upper_tri <- function(cormat){
cormat[lower.tri(cormat)]<- NA
return(cormat)
}
# Reorder correlation matrix
cormat <- reorder_cormat(a)
upper_tri <- get_upper_tri(cormat)
# Fondre la matrice de corrélation
melted_cormat <- melt(upper_tri, na.rm = TRUE)
# Créer un ggheatmap
ggheatmap <- ggplot(melted_cormat, aes(Var2, Var1, fill = value))+
geom_tile(color = "white")+
scale_fill_gradient2(low = "white", high = "red",
midpoint = 0.09, limit = c(0,1), space = "Lab",
name="JSD") +
theme_minimal()+ # minimal theme
theme(axis.text.x = element_text(angle = 45, vjust = 1,
size = 12, hjust = 1))+
coord_fixed()
output$heat <- renderPlot(ggheatmap)
im priting тепловой картыв моем shyniapp используя ui.R с кодом:
tabPanel ("Heatmap", plotOutput ("heat")),
Пожалуйста, дайте мне знать, если вам нужнобольше информации
Спасибо за ваше время