plots - text in r
Acceso simultáneo al entorno desde dos sesiones R (2)
¿Es técnicamente posible en R?
Me gustaría ejecutar una instancia brillante con un objeto R6 preparado (clase de entorno), usar sus métodos, principalmente de solo lectura.
Mientras que, al mismo tiempo que tengo una aplicación brillante, me gustaría llamar a otros métodos de mi R6: lectura / escritura.
La sesión de Shiny R podría ser un host para mi objeto R6, mientras que la segunda sesión se llamaría desde el script R programado / interactivamente desde la consola R.
Actualmente, lo que creo que puedo hacer es generar el script R directamente desde brillos bajo un botón, pero esto limita la interactividad.
Creo que he hecho lo que querías accidentalmente, ¿esencialmente 2 sesiones de estudio de RST en paralelo? En mi Mac, simplemente hago clic derecho en RStudio y selecciono Nueva ventana de RStudio. Lo he hecho en Windows también, pero no tengo acceso a un cajero automático, debería ser similar. La ejecución de 2 sesiones le permite conservar y volver al original mientras modifica la segunda instancia. Con 2 monitores, esto puede ser muy útil para acelerar el tiempo de desarrollo en detalles delicados;)
Este artículo describe las reglas de alcance para las aplicaciones Shiny y cómo definir datos globales con código empaquetado de manera diversa. A continuación se muestra mi ejemplo de una variable global que contiene datos accesibles a varias sesiones.
Ejecute esta aplicación, luego abra una segunda pestaña / ventana en su navegador y apunte a la misma conexión. Puede hacer clic en el botón +1 en una sesión para incrementar el conteo máximo y local compartido. En la otra sesión, no verá ningún cambio hasta que algo se active para volver a verificar los datos compartidos, pero al hacer clic en el botón +1 se actualizará el recuento local, pero también se activará la actualización del valor de datos máximo compartido. Puede hacer clic en el botón +1 allí varias veces hasta que tenga un nuevo máximo, luego volver a la primera ventana y puede ver que el máximo también está visible allí, una vez que haga clic en el botón +1 para activar una actualización. Esto funciona para múltiples ventanas.
Tienes que hacer algo para que una sesión verifique los datos nuevamente para actualizar. No trabajé demasiado para hacer que esto sucediera sin efectos secundarios. Debería haber alguna forma de hacer una "actualización" basada en el disparador que desee. Incluso puedes usar una encuesta cronometrada para mantener los datos sincronizados, como hace este ejemplo con los archivos.
La única advertencia de este ejemplo es que solo lo he intentado con una implementación de servidor brillante de RStudio local. No sé que funcione de esta manera en un servidor real. Si no lo hace, por favor comente a tal efecto! Probablemente no funcionará de esta manera en shinyapps.io o con cualquier tipo de equilibrio de carga / nube en general, ya que no puede garantizar que dos sesiones compartan una instancia de aplicación en una máquina.
library(shiny)
globalMax <- 0
app <- shinyApp(
ui= pageWithSidebar(
headerPanel("Shared data demo"),
sidebarPanel(
actionButton("plusButton", "+1")
),
mainPanel(
verbatimTextOutput("sharedMax")
)
),
server= function(input,output){
observe({
if (input$plusButton > globalMax) {
globalMax <<- input$plusButton
}
})
output$sharedMax <- renderText({
paste0( "Shared max value: ", globalMax, "/n",
"Local value: ", input$plusButton)
})
}
)
runApp(app)