>

작성중인 Shiny 프로그램의 경우 대시, 쉼표 및 대괄호가 포함 된 입력 변수가 있습니다. 내가 대치 할 수있는 공간이지만 나머지는 화학 화합물을 지칭하기 때문에 필요하며 그것들이 없으면 의미가 없습니다. 예상 한대로이 문자는 Shiny 앱이 원하는 변수를 찾을 수 없게합니다. 이러한 문자가없는 변수는 제대로 작동합니다.

수정 :아래 코드는 테스트 반짝이는 앱입니다. Chemical-X (a, b)에서 앱은 "함수 X를 찾을 수 없습니다"를 반환합니다. Chemical.B를 사용하면 앱이 화학 물질을 객체로 인식하고 존재하지 않는 일부 기능이 없기 때문에 원하는 결과 인 "object Chemical.B not found"를 반환합니다.

library (shiny)
library (ggplot2)
dat <- as.data.frame(c("Chemical-X(a,b)", "Chemical.B"))
dat[,2] <- (c(6,3)) 
colnames(dat) <- c("Chemical", "Count")
ui <- fluidPage(
 titlePanel("SE Test"),
  sidebarLayout(
   sidebarPanel(
    selectInput(inputId = "varX",
              label = "Chemical",
              choices = dat[,1],
              width = "200px"),
    selectInput(inputId = "varY1",
              label = "Count",
              choices = dat[,2],
              width = "200px")
  ),
mainPanel(
  plotOutput("chemPlot")
   )
  )
 )
server <- function(input, output){
 output$chemPlot <- renderPlot({
  plot.data <- ggplot(data = dat)
    point <- plot.data + geom_point(
    aes_string(x = input$varX, y = input$varY1))
  plot(point)
  })
}

shinyApp (ui = ui, 서버 = 서버)

이 작업을 수행하는 알려진 방법이 있습니까? 아니면 가능한 해결책을 찾아야합니까? 여기 에서 백틱을 사용해 보았지만 작동하지 않았습니다.

감사합니다, 매트


  • 답변 # 1

    백틱과 aes_string 를 찾았습니다  일반적으로 나를 위해 작동합니다.

    library("ggplot2")
    mtcars$"name with~special character" <- mtcars$cyl
    ggplot(mtcars, aes_string(x="`name with~special character`", y="mpg")) + 
        geom_point()
    
    
    나는 종종 도우미 함수 paste_aes 를 사용한다  예를 들면 다음과 같습니다.

    paste_aes <- function(x) paste0("`", x, "`")
    
    

  • 답변 # 2

    이제 as.name Shiny input $변수를 호출하여 수정했습니다. 위의 예는 다음과 같습니다.

    server <- function(input, output){
     output$chemPlot <- renderPlot({
      plot.data <- ggplot(data = dat)
        point <- plot.data + geom_point(
        aes_string(x = as.name(input$varX), y = as.name(input$varY1)))
      plot(point)
    
    

    이제 의도 한대로 작동하는 것 같습니다. 노력해 주셔서 감사합니다.

관련 자료

  • 이전 javascript - 상대 위치에서 고정 위치로 요소 위치를 변경하면 내용이 튀는 것을 방지하는 방법
  • 다음 Haskell,"다중 유형"목록 작성