Introducción
Los ejercicios interactivos mejoran el aprendizaje al ofrecer feedback inmediato a través de pistas, soluciones y calificaciones personalizadas. En este tutorial, creará un ejercicio interactivo paso a paso utilizando Quarto Live. Cubriremos lo siguiente:
Creación de un ejercicio básico
Defina un bloque de código interactivo como ejercicio utilizando una etiqueta única.Ejecutar el código de configuración
Prepare el entorno (por ejemplo, cargue paquetes o establezca variables) antes de ejecutar el código del alumno.Añadir pistas y soluciones
Proporcione pistas progresivas para guiar al alumno. Ofrecer una solución completa que se pueda revelar cuando sea necesario.Usar conjuntos de pestañas para ejercicios
Organice las sugerencias y soluciones en un conjunto de pestañas para obtener una interfaz de usuario más limpia.Implementar calificaciones personalizadas
Escribe una lógica de calificación personalizada que proporcione feedback inmediato basado en la entrada del alumno.
Repasemos cada uno de estos pasos con ejemplos prácticos.
Creación de un ejercicio básico
Para marcar un bloque de código webr
como ejercicio, utilice la opción de celda exercise
con una etiqueta única. Por ejemplo, el siguiente bloque pide al alumno que rellene el espacio en blanco para que la suma sea igual a 10:
Fuente del código
exercise.qmd
Rellene el espacio en blanco para que el resultado de la suma sea 10.
```{webr}
#| exercise: ex_1
1 + 2 + 3 + ______
```
Resultados
Rellene el espacio en blanco para que el resultado de la suma sea 10.
Los ejercicios no se evalúan automáticamente de forma predeterminada. El alumno debe hacer clic en Run Code
para ver el resultado.
Ejecutar el código de configuración
A menudo, será necesario ejecutar código de configuración antes de un ejercicio (por ejemplo, para cargar paquetes o definir variables).
Se puede crear un bloque de código de configuración de la siguiente manera:
- Definir un bloque de configuración:
Utilice la opción de celdasetup: true
para designar un bloque de código como código de configuración. - Enlazar a un ejercicio: Establece la opción de celda
exercise
para que coincida con una etiqueta de ejercicio existente.
El código de configuración se ejecutará antes que el código del alumno en el ejercicio.
Código de configuración de ejemplo para un ejercicio
A continuación, encontrará un ejemplo de un bloque de código de configuración seguido de un bloque de ejercicio:
Fuente del código
Rellene el espacio en blanco para que el resultado de la suma sea 10.
exercise.qmd
```{webr}
#| setup: true
#| exercise: ex_2
foo <- 1
bar <- 2
baz <- 3
```
```{webr}
#| exercise: ex_2
foo + bar + baz + ______
```
Resultados
Rellene el espacio en blanco para que el resultado de la suma sea 10.
Código de configuración de ejemplo para varios ejercicios
Se puede adjuntar un bloque de configuración a varios ejercicios proporcionando una lista de ejercicios para la opción de celda exercise
. El código de la celda de configuración se ejecutará antes de cada evaluación de cualquiera de los ejercicios enumerados.
Fuente del código
exercise.qmd
```{webr}
#| setup: true
#| exercise:
#| - ex_a1
#| - ex_a2
var_xyz <- c(1, 3, 7, 9, 13, 15)
```
```{webr}
#| exercise: ex_a1
var_xyz * 2
```
```{webr}
#| exercise: ex_a2
var_xyz ** 2
```
Resultados
Añadir pistas y soluciones
- Las sugerencias se añaden utilizando bloques delimitados con la clase
.hint
y el mismo atributoexercise
. Se revelan progresivamente cuando el alumno solicita ayuda. - Las soluciones se añaden utilizando bloques delimitados con la clase
.solution
y el mismo atributoexercise
. Se revelan a la vez cuando el alumno solicita la solución.
Fuente del código
exercise.qmd
`starwars` para que solo se incluyan los personajes droides.
Filtre el conjunto de datos
```{webr}
#| setup: true
#| exercise: ex_3
library(dplyr)
```
```{webr}
#| exercise: ex_3
starwars |> ______
```
::: { .hint exercise="ex_3"}
::: { .callout-note collapse="false"}## Sugerencia 1
`filter()` de `dplyr`.
Considere la posibilidad de utilizar la función
```r
|> filter(______)
starwars ```
:::
:::
::: { .hint exercise="ex_3"}
::: { .callout-note collapse="false"}## Sugerencia 2
`species`.
Debe filtrar el conjunto de datos utilizando la columna
```r
|> filter(species == ______)
starwars ```
:::
:::
::: { .solution exercise="ex_3" }
::: { .callout-tip collapse="false"}## Solución completa:
`filter()` de `dplyr`:
Utilice la función
```r
|> #<1>
starwars filter(species == "Droid") #<2>
```
1. Tome el conjunto de datos `starwars` y, a continuación,
2. Filtrar por la especie `Droid`.
::: :::
Resultados
Filtre el conjunto de datos starwars
para que solo se incluyan los personajes droides.
Considere la posibilidad de utilizar la función filter()
de dplyr
.
|> filter(______) starwars
Debe filtrar el conjunto de datos utilizando la columna species
.
|> filter(species == ______) starwars
Organización de ejercicios con conjuntos de pestañas
Para obtener una interfaz más limpia, puede envolver las sugerencias y soluciones en un conjunto de pestañas. Esto permite a los alumnos revelar pistas progresivamente y ver la solución cuando estén listos.
Fuente del código
exercise.qmd
:::: {.panel-tabset}
## Ejercicio
```{webr}
#| setup: true
#| exercise: ex_4
library(dplyr)
```
```{webr}
#| exercise: ex_4
starwars |> ______
```
## Sugerencias
::: { .hint exercise="ex_4"}`filter()` de `dplyr`.
Considere la posibilidad de utilizar la función
```r
|> filter(______)
starwars ```
:::
## Solución
::: { .solution exercise="ex_4" }`filter()` de `dplyr`:
Utilice la función
```r
|> #<1>
starwars filter(species == "Droid") #<2>
```
1. Tome el conjunto de datos `starwars` y, a continuación,
2. Filtrar por la especie `Droid`.
:::
::::
Resultados
Opciones de nivel de documento
Active y desactive las sugerencias y soluciones para todo un documento utilizando la clave live
en el encabezado YAML del documento.
---
live:
show-hints: true
show-solutions: true
---
Implementar calificaciones personalizadas
Para evaluar automáticamente el código del alumno, incluye un bloque de código con la opción check: true
. Este bloque compara el resultado del alumno (referenciado por .result
) con el resultado esperado.
Fuente del código
Calcular la media de todos los números enteros del 1 al 10.
```{webr}
#| exercise: ex_1_r
______(1:10)
```
```{webr}
#| exercise: ex_1_r
#| check: true
if (identical(.result, mean(1:10))) {
list(correct = TRUE, message = "Nice work!")
} else {
list(correct = FALSE, message = "That's incorrect, sorry.")
}
```
Resultados
Calcular la media de todos los números enteros del 1 al 10.
Este bloque de calificación proporciona automáticamente comentarios basados en la entrada del alumno.
Lecturas adicionales
- Explicación de los bloques de código interactivo
Aprenda los conceptos básicos para crear bloques de código interactivos en Quarto Live. - Carga y uso de paquetes
Descubra técnicas para instalar y cargar paquetes R adicionales. - Gestión de entornos de ejecución
Comprenda cómo controlar el uso compartido de variables y aislar ejercicios. - Referencia de opciones de celda
Explorar opciones de configuración avanzadas para bloques de código interactivo.
Conclusión
El diseño de ejercicios interactivos en Quarto Live le permite ofrecer una experiencia de aprendizaje práctica y de apoyo. Siguiendo esta guía paso a paso, podrá crear ejercicios que incluyen código de configuración, sugerencias, soluciones y lógica de calificación personalizada. Experimenta con estas técnicas y adáptalas a tus necesidades docentes para crear retos interactivos y atractivos en R.
Explorar más artículos
Aquí hay más artículos de la misma categoría para ayudarte a profundizar en el tema.
Reutilización
Cómo citar
@online{kassambara2025,
author = {Kassambara, Alboukadel},
title = {Diseño y calificación de ejercicios interactivos de R},
date = {2025-03-15},
url = {https://www.datanovia.com/es/learn/interactive/r/exercises.html},
langid = {es}
}