Как сделать так, чтобы пользовательский ввод в моем приложении Rshiny динамически взаимодействовал с моим файлом R.js с помощью R2D3? - PullRequest
0 голосов
/ 07 мая 2019

У меня есть скрипт d3.js как R.js, отлично работающий, когда я запускаю опцию предварительного просмотра, но я не могу правильно запустить его в RShiny.Входные данные не перерисовывают выходные данные, а цвета не такие, как я их установил в js.У меня есть датафрейм с несколькими столбцами, и я хочу выбрать столбцы на основе пользовательского ввода для подачи в вызов функции R2D3 в RShiny, который вызовет d3.js.

--- У меня есть CSV с идентификатором в одном столбце (который всегда будет извлечен) и значением для всех остальных столбцов, даже если они изначально обозначают такие значения, как «радиус планеты» и т. Д... так что мне не нужно иметь дело с изменением имен столбцов.

Этот код ниже - только последняя итерация того, что я пробовал.До этого я много раз пытался создать отдельный реактивный блок для установки входной переменной в переменную df, которая позже будет вызываться при вызове функции r2d3 с помощью df ().Я нахожусь вне вариантов и в данный момент.

Есть ли что-то, чего мне не хватает в скрипте d3js или в Rshiny?Я настроил скрипт в пользовательском интерфейсе с помощью includeScript (), как я видел в других постах.

скрипт d3, который я использую, находится здесь: https://rstudio.github.io/r2d3/articles/gallery/bubbles/

I 'Я попробовал все в моей рубке (что немного), я имею в виду буквально 20 часов, потраченных на это, и я не могу заставить его работать.

library(shiny)
library(r2d3)

planets <- read.csv("grouped.csv")

columnList = c("Orbital Period [days]", "Orbital Semi-Major Axis [AU]", 
"Eccentricity", "Planet Mass [Earths]", 
           "Planet Radius [Earths]", "Optical Magnitude", "Distance From 
Earth [Parsecs]", "Planet Density [g/cm3]")

ui <- fluidPage(

    includeScript(path = "bubbs1.js"),
    selectInput(inputId = "two", label = "Data Field", choices = columnList, selected = "Distance From Earth [Parsecs]"),

d3Output("d3")

)

server <- function(input, output) {

    output$d3 <- renderD3({
    if (input$two == "Orbital Period [days]"){
        r2d3(data = planets[,c(10,3)], script = "bubbs1.js", d3_version = "4")
    }
    if (input$two == "Orbital Semi-Major Axis [AU]"){
        r2d3(data = planets[,c(10,4)], script = "bubbs1.js", d3_version = "4")
    }
    if (input$two == "Eccentricity"){
        r2d3(data = planets[,c(10,5)], script = "bubbs1.js", d3_version = "4")
    }
    if (input$two == "Planet Mass [Earths]"){
        r2d3(data = planets[,c(10,6)], script = "bubbs1.js", d3_version = "4")
    }
    if (input$two == "Planet Radius [Earths]"){
        r2d3(data = planets[,c(10,7)], script = "bubbs1.js", d3_version = "4")
    }
    if (input$two == "Optical Magnitude"){
        r2d3(data = planets[,c(10,8)], script = "bubbs1.js", d3_version = "4")
    }
    if (input$two == "Distance From Earth [Parsecs]"){
        r2d3(data = planets[,c(10,9)], script = "bubbs1.js", d3_version = "4")
    }
    r2d3(data = planets[,c(10,9)], script = "bubbs1.js", d3_version = "4")
})
}

shinyApp(ui = ui, server = server)

Во-первых, я просто хочу, чтобы реактивность в выпадающем меню работала, и я спроектирую все остальное, если вы сможете мне помочь с этой функциональностью.В конце концов, я хочу, чтобы он был интерактивным (при нажатии такие функции, как пузырь, изменяют цвет, отображают текстовое поле вывода).

...