Как читать со стандартного ввода в Shiny? - PullRequest
0 голосов
/ 11 июня 2018

Я могу читать из stdin в R-скрипте:

$ echo "some text" | Rscript script.R

Примечание: используя Docker и образ rocker/r-base, вы можете запустить:

$ echo "some text" | docker run --rm -i \
    -v $(pwd):/usr/src/app rocker/r-base \
    bash -c 'Rscript /usr/src/app/script.R'

sript.R :

f <- file("stdin")
i <- readLines(f)
close(f)
cat(i)

Теперь я хочу воспроизвести это поведение в блестящем:

$ echo "some text" | shiny-server

Примечание: или с помощью докера, используя rocker/shiny:

$ docker run --rm -it -p 80:3838 -v $(pwd):/srv/shiny-server/ rocker/shiny bash
# and then run in the container
$ echo "some text" | shiny-server

app.R :

library(shiny)
ui <- pageWithSidebar(
    headerPanel("example"),
    sidebarPanel(),
    mainPanel(textOutput("my_stdin"))
)

server <- function(input, output, session) {
    output$my_stdin <- renderText({
        f <- file("stdin")
        i <- readLines(f)
        close(f)
        i
    })
}
shinyApp(ui, server)

Почему нет вывода из блестящего?

Фактический сценарийчитает потоковые данные из $ nc -u -l 1.2.3.4 1234, но простой пример выше также иллюстрирует мою проблему.

...