A continuación se deja una guía detallada desde cero absoluto para que se pueda crear una cuenta, construir una App Shiny básica en Posit Cloud y desplegarla en shinyapps.io.

Guía desde cero: creación y despliegue de una App Shiny en shinyapps.io

1. Objetivo general

Al finalizar esta actividad, el estudiante deberá ser capaz de:

  1. Crear una cuenta en Posit Cloud.
  2. Crear una cuenta en shinyapps.io.
  3. Crear un proyecto nuevo en Posit Cloud.
  4. Construir una App Shiny básica en R.
  5. Probar la App dentro de Posit Cloud.
  6. Conectar Posit Cloud con shinyapps.io mediante rsconnect.
  7. Publicar la App en shinyapps.io.
  8. Compartir el enlace público de la aplicación.

2. Conceptos básicos

Antes de iniciar, es importante distinguir dos plataformas:

Plataforma Función principal
Posit Cloud Lugar donde se escribe y ejecuta el código R/Shiny en la nube.
shinyapps.io Servicio donde se publica la App para que otras personas la abran desde un enlace web.

Es decir:

Posit Cloud  →  desarrollar la App
shinyapps.io →  publicar y compartir la App

Posit documenta que las aplicaciones Shiny pueden publicarse desde RStudio usando el botón Publish o mediante el paquete rsconnect con la función deployApp(). (Posit Docs)


3. Primera parte: inscripción en Posit Cloud

3.1. Crear cuenta en Posit Cloud

El estudiante debe ingresar a:

https://posit.cloud/

Luego debe:

  1. Hacer clic en Sign Up.
  2. Registrarse con un correo electrónico.
  3. Confirmar el correo si la plataforma lo solicita.
  4. Iniciar sesión.

Posit Cloud permite usar herramientas de ciencia de datos directamente desde el navegador, sin necesidad de instalar RStudio en el computador. (Posit Cloud)


4. Segunda parte: inscripción en shinyapps.io

4.1. Crear cuenta en shinyapps.io

El estudiante debe ingresar a:

https://www.shinyapps.io/

Luego debe:

  1. Hacer clic en Sign Up.
  2. Crear una cuenta.
  3. Usar preferiblemente el mismo correo usado en Posit Cloud.
  4. Confirmar el correo si es necesario.
  5. Iniciar sesión en el panel de shinyapps.io.

Al entrar, el estudiante verá un panel parecido a este:

Dashboard
Applications
Account
Billing
Usage
Tokens

5. Tercera parte: crear un proyecto en Posit Cloud

5.1. Crear nuevo proyecto

Dentro de Posit Cloud:

  1. Hacer clic en New Project.
  2. Seleccionar New RStudio Project.
  3. Esperar a que cargue el entorno de RStudio en la nube.

Cuando el proyecto abra, se observarán cuatro zonas principales:

Zona Función
Editor Lugar donde se escribe el código.
Console Lugar donde se ejecutan comandos R.
Environment Muestra objetos creados en memoria.
Files / Plots / Packages Archivos, gráficos y paquetes del proyecto.

6. Cuarta parte: crear una App Shiny básica

6.1. Crear archivo app.R

En Posit Cloud:

  1. Ir a File → New File → R Script.
  2. Guardar el archivo como:
app.R

Es importante que el archivo se llame exactamente:

app.R

Shiny reconoce este archivo como la aplicación principal.


6.2. Código completo de la primera App

Copie y pegue este código en app.R:

# ============================================================
# Mi primera aplicación Shiny
# Curso: Estadística Aplicada / Programación con R
# Archivo principal: app.R
# ============================================================

# Cargar el paquete principal de Shiny
library(shiny)

# ------------------------------------------------------------
# INTERFAZ DE USUARIO
# ------------------------------------------------------------
# Aquí se define lo que el usuario verá en la página web.
# Incluye títulos, controles de entrada y espacios para salidas.

ui <- fluidPage(
  
  # Título principal de la aplicación
  titlePanel("Mi primera App Shiny"),
  
  # Diseño con panel lateral y panel principal
  sidebarLayout(
    
    # Panel lateral: recibe entradas del usuario
    sidebarPanel(
      
      # Control numérico para que el usuario escriba su nombre
      textInput(
        inputId = "nombre",
        label = "Escriba su nombre:",
        value = ""
      ),
      
      # Control deslizante para elegir un número
      sliderInput(
        inputId = "numero",
        label = "Seleccione un número:",
        min = 1,
        max = 100,
        value = 50
      )
    ),
    
    # Panel principal: muestra resultados
    mainPanel(
      
      # Salida de texto para el saludo
      h3("Resultado:"),
      textOutput("saludo"),
      
      br(),
      
      # Salida de texto para mostrar el número seleccionado
      textOutput("numero_elegido")
    )
  )
)

# ------------------------------------------------------------
# SERVIDOR
# ------------------------------------------------------------
# Aquí se define la lógica de la aplicación.
# El servidor toma las entradas del usuario y produce salidas.

server <- function(input, output) {
  
  # Generar un saludo personalizado
  output$saludo <- renderText({
    
    # Si el estudiante no escribe nombre, se muestra un mensaje general
    if (input$nombre == "") {
      "Bienvenido a esta App Shiny."
    } else {
      paste("Bienvenido,", input$nombre, ".")
    }
  })
  
  # Mostrar el número seleccionado por el usuario
  output$numero_elegido <- renderText({
    paste("El número seleccionado es:", input$numero)
  })
}

# ------------------------------------------------------------
# EJECUTAR LA APLICACIÓN
# ------------------------------------------------------------
# Esta línea une la interfaz y el servidor.

shinyApp(ui = ui, server = server)

7. Quinta parte: probar la App en Posit Cloud

7.1. Ejecutar la App

En Posit Cloud, con el archivo app.R abierto:

  1. Hacer clic en el botón Run App.
  2. Esperar a que cargue la aplicación.
  3. Probar escribiendo un nombre.
  4. Mover el control deslizante.

También puede ejecutarse desde la consola con:

shiny::runApp()

La documentación de shinyapps.io recomienda verificar primero que la aplicación funciona localmente antes de desplegarla. (Posit Docs)


8. Sexta parte: estructura correcta del proyecto

Para una App básica, el proyecto debe tener al menos este archivo:

/cloud/project/
└── app.R

Para Apps más avanzadas puede tener:

/cloud/project/
├── app.R
├── datos/
│   └── archivo.csv
├── www/
│   └── logo.png
└── README.md

Recomendación importante

No se debe colocar install.packages() dentro de app.R.

Incorrecto:

install.packages("shiny")
library(shiny)

Correcto:

library(shiny)

Posit advierte que no se deben incluir llamadas explícitas a install.packages() dentro de ui.R o server.R. En el despliegue, rsconnect detecta los paquetes mediante llamadas explícitas a library() y envía esa información a shinyapps.io. (Posit Docs)


9. Séptima parte: instalar paquetes necesarios

9.1. Instalar paquetes en Posit Cloud

En la consola, ejecutar:

install.packages("shiny")
install.packages("rsconnect")

O de forma compacta:

install.packages(c("shiny", "rsconnect"))

Luego cargar:

library(shiny)
library(rsconnect)

10. Octava parte: obtener token en shinyapps.io

10.1. Entrar a Tokens

En shinyapps.io:

  1. Ir a Account.
  2. Entrar a Tokens.
  3. Hacer clic en Add Token o Show Token.
  4. Copiar el código que aparece.

El código tendrá una forma parecida a esta:

rsconnect::setAccountInfo(
  name = "nombre-de-la-cuenta",
  token = "TOKEN_GENERADO",
  secret = "SECRET_GENERADO"
)

Cada estudiante debe copiar su propio código. No debe compartir públicamente su token ni su secret.


11. Novena parte: conectar Posit Cloud con shinyapps.io

11.1. Registrar la cuenta

En la consola de Posit Cloud, el estudiante debe pegar el código que le entrega shinyapps.io.

Ejemplo ilustrativo:

rsconnect::setAccountInfo(
  name = "mi-cuenta",
  token = "xxxxxxxxxxxxxxxx",
  secret = "yyyyyyyyyyyyyyyy"
)

Después debe verificar que la cuenta quedó registrada:

rsconnect::accounts()

Debe aparecer algo parecido a:

       name       server
1 mi-cuenta shinyapps.io

12. Décima parte: desplegar la App

12.1. Publicar con deployApp()

Desde la consola de Posit Cloud, estando en el proyecto donde está app.R, ejecutar:

rsconnect::deployApp(
  appDir = "/cloud/project",
  appName = "mi-primera-app-shiny"
)

El nombre de la aplicación debe escribirse:

  1. Sin espacios.
  2. Sin tildes.
  3. Sin ñ.
  4. En minúsculas preferiblemente.
  5. Con guiones si se desea separar palabras.

Ejemplos válidos:

mi-primera-app-shiny
app-probabilidad
analisis-datos-suelos
evaluador-estadistico

Ejemplos no recomendados:

Mi Primera App
Aplicación de Estadística
app con ñ

La documentación oficial indica que una App puede publicarse desde R con el paquete rsconnect usando deployApp(). (Posit Docs)


13. Undécima parte: abrir y compartir la App

Cuando el despliegue termina correctamente, shinyapps.io genera una URL parecida a:

https://nombre-cuenta.shinyapps.io/nombre-app/

Ejemplo:

https://miusuario.shinyapps.io/mi-primera-app-shiny/

Ese enlace puede compartirse por:

  1. Microsoft Teams.
  2. WhatsApp.
  3. Correo institucional.
  4. Google Classroom.
  5. Moodle.
  6. Documento PDF.
  7. Página web.

14. Duodécima parte: verificar que la App es accesible

El estudiante debe probar el enlace en:

  1. Una ventana de incógnito.
  2. Otro navegador.
  3. Un celular.
  4. El computador de un compañero.

Si la App abre sin pedir usuario ni contraseña, el enlace está listo para compartir.


15. Estados de una App en shinyapps.io

En shinyapps.io, la App puede aparecer con distintos estados:

Estado Significado
Running La App está activa.
Sleeping La App está dormida por inactividad.
Archived La App está archivada y no se sirve normalmente.

Que una App aparezca como Sleeping no es un error. En general, cuando alguien abre el enlace, la App despierta y pasa nuevamente a Running. Posit explica que las aplicaciones pueden estar en estados como running, sleeping o archived dentro de la administración de aplicaciones. (Posit Docs)


16. Problemas frecuentes y soluciones

16.1. Error: api.shinyapps.io Not Registered

Causa probable

Posit Cloud no tiene registrada la cuenta de shinyapps.io.

Solución

Ejecutar nuevamente en la consola el código del token:

rsconnect::setAccountInfo(
  name = "nombre-cuenta",
  token = "token",
  secret = "secret"
)

Luego verificar:

rsconnect::accounts()

16.2. Error: Unable to connect to worker after 60.00 seconds

Causa probable

La aplicación tarda demasiado en arrancar.

Puede ocurrir por:

  1. Uso de install.packages() dentro de app.R.
  2. Carga de archivos muy pesados al inicio.
  3. Paquetes muy pesados.
  4. Errores en el código del servidor.
  5. Conexiones externas lentas.

Solución recomendada

No usar esto dentro de app.R:

install.packages("shiny")

Usar solo:

library(shiny)

16.3. Error: there is no package called...

Causa probable

El paquete no fue detectado correctamente o no aparece en library().

Solución

Asegurarse de que el paquete esté cargado explícitamente:

library(shiny)
library(DT)
library(dplyr)

Luego volver a publicar:

rsconnect::deployApp(
  appDir = "/cloud/project",
  appName = "mi-primera-app-shiny",
  forceUpdate = TRUE
)

16.4. La App funciona en Posit Cloud, pero no en shinyapps.io

Causas frecuentes

Problema Solución
Archivo local no subido Guardar los datos dentro del proyecto.
Ruta incorrecta Usar rutas relativas, no rutas del computador personal.
Paquete faltante Incluir library(paquete).
Uso de install.packages() en app.R Quitar esa línea.
Archivo con tildes o espacios Renombrar archivos de forma simple.

Ejemplo de ruta recomendada:

datos <- read.csv("datos/archivo.csv")

Ejemplo de ruta no recomendada:

datos <- read.csv("C:/Users/Estudiante/Documents/archivo.csv")

17. Recomendaciones de buenas prácticas

17.1. Recomendaciones para el archivo app.R

El archivo debe tener una estructura clara:

# Cargar paquetes
library(shiny)

# Interfaz
ui <- fluidPage(
  ...
)

# Servidor
server <- function(input, output) {
  ...
}

# Ejecutar App
shinyApp(ui = ui, server = server)

17.2. Recomendaciones para nombres de archivos

Usar nombres simples:

app.R
datos.csv
logo.png
resultados.xlsx

Evitar:

Aplicación Final Versión Última.R
datos con espacios y tildes.csv
archivo ñ.csv

17.3. Recomendaciones para publicar

Antes de publicar:

  1. Guardar todos los archivos.
  2. Ejecutar la App en Posit Cloud.
  3. Verificar que no haya errores en consola.
  4. Quitar install.packages() de app.R.
  5. Verificar que los datos estén dentro del proyecto.
  6. Ejecutar deployApp().

18. Actividad sugerida para estudiantes

Producto esperado

Cada estudiante o grupo debe entregar:

  1. Enlace de la App publicada en shinyapps.io.

  2. Captura de pantalla de la App funcionando.

  3. Captura de pantalla del panel de shinyapps.io donde aparece la App.

  4. Archivo app.R.

  5. Breve explicación de:

    • Qué hace la App.
    • Qué entradas recibe.
    • Qué procesos realiza.
    • Qué salidas muestra.
    • Qué dificultad tuvo durante el despliegue.

19. Plantilla de entrega

El estudiante puede entregar un documento con esta estructura:

# Despliegue de mi primera App Shiny

## 1. Datos del estudiante

Nombre:
Programa:
Asignatura:
Fecha:

## 2. Nombre de la App

Nombre de la aplicación:

## 3. Enlace publicado

URL:

## 4. Descripción de la App

La aplicación permite...

## 5. Entradas de la App

La App recibe...

## 6. Procesamiento

La App procesa...

## 7. Salidas

La App muestra...

## 8. Evidencias

Captura de Posit Cloud:
Captura de shinyapps.io:
Captura de la App publicada:

## 9. Dificultades encontradas

Durante el proceso se presentaron las siguientes dificultades...

## 10. Reflexión final

Esta actividad me permitió comprender que...

20. Rúbrica básica de evaluación

Criterio Descripción Puntaje
Creación de cuentas Se evidencia inscripción en Posit Cloud y shinyapps.io 1.0
Funcionamiento local La App corre correctamente en Posit Cloud 1.0
Código organizado El archivo app.R tiene estructura clara y comentarios 1.0
Despliegue exitoso La App abre correctamente desde shinyapps.io 1.0
Explicación del proceso El estudiante describe entradas, procesos y salidas 1.0
Total 5.0

21. Código final recomendado para práctica inicial

Este código puede usarse como base para la primera práctica:

# ============================================================
# Mi primera App Shiny
# Autor: Nombre del estudiante
# Curso: Estadística Aplicada con R y Python
# ============================================================

library(shiny)

ui <- fluidPage(
  
  titlePanel("Mi primera App Shiny"),
  
  sidebarLayout(
    
    sidebarPanel(
      textInput(
        inputId = "nombre",
        label = "Nombre del estudiante:",
        value = ""
      ),
      
      numericInput(
        inputId = "edad",
        label = "Edad:",
        value = 18,
        min = 1
      ),
      
      selectInput(
        inputId = "programa",
        label = "Programa académico:",
        choices = c(
          "Ingeniería Agrícola",
          "Ingeniería Agroindustrial",
          "Ingeniería Civil",
          "Otro"
        )
      )
    ),
    
    mainPanel(
      h3("Resumen ingresado"),
      verbatimTextOutput("resumen")
    )
  )
)

server <- function(input, output) {
  
  output$resumen <- renderText({
    paste(
      "Nombre:", input$nombre,
      "\nEdad:", input$edad,
      "\nPrograma:", input$programa
    )
  })
}

shinyApp(ui = ui, server = server)

22. Comando final de publicación

Después de probar que la App funciona, publicar con:

rsconnect::deployApp(
  appDir = "/cloud/project",
  appName = "mi-primera-app-shiny"
)

Si ya existe una versión anterior y se desea actualizar:

rsconnect::deployApp(
  appDir = "/cloud/project",
  appName = "mi-primera-app-shiny",
  forceUpdate = TRUE
)

23. Cierre

La secuencia completa es:

Crear cuenta en Posit Cloud
        ↓
Crear proyecto nuevo
        ↓
Crear archivo app.R
        ↓
Probar con Run App
        ↓
Crear cuenta en shinyapps.io
        ↓
Copiar token
        ↓
Ejecutar rsconnect::setAccountInfo()
        ↓
Ejecutar rsconnect::deployApp()
        ↓
Copiar enlace público
        ↓
Probar en incógnito
        ↓
Compartir la App

Esta actividad permite que los estudiantes no solo escriban código en R, sino que comprendan el ciclo completo de desarrollo de una aplicación web: diseño, programación, prueba, despliegue y socialización del producto final.