Si una función en R tiene varias líneas de código y no se utiliza la función `return()`, ¿qué valor devolverá por defecto?
Recuerda cómo se comporta R con el flujo de instrucciones dentro de las llaves.
R ignora las líneas iniciales en términos de salida si hay cálculos posteriores en el cuerpo de la función.
R no agrupa automáticamente los resultados de cada línea a menos que se le indique explícitamente.
Por comportamiento predeterminado, R siempre entrega únicamente el valor de la última expresión evaluada dentro de la función.
La ausencia de un retorno explícito no causa errores; R simplemente sigue su regla de retorno automático.
¿Cuál es el propósito principal de utilizar la función `return()` dentro de una función personalizada?
Considera la diferencia entre dejar que R decida el resultado y decidirlo tú mismo.
La función `print()` se usa para mostrar, mientras que `return()` define el valor que la función entrega al exterior.
Permite tomar el control total sobre qué resultado se devuelve, evitando ambigüedades con la última línea.
El número de argumentos se define en el encabezado de la función, no mediante el retorno.
Las variables locales se eliminan automáticamente al terminar la función, independientemente del uso de `return()`.
Dada la función `calcular_promedio <- function(p1, p2) { (p1 + p2) / 2 }`, ¿qué representan `p1` y `p2`?
Piensa en los elementos que se encuentran dentro del paréntesis al definir la receta.
Los valores devueltos son el producto del cálculo, no los datos de entrada.
`p1` y `p2` son etiquetas locales, no funciones globales del lenguaje.
Los argumentos son los parámetros que el usuario debe proporcionar para que la función realice su tarea.
Los argumentos son variables; su valor cambia cada vez que se llama a la función con datos distintos.
¿Qué resultado se obtiene al ejecutar el comando `sum(c(1, 2, 3), c(4, 5, 6))`?
La función `sum()` es acumulativa a través de todos los datos ingresados.
La función `sum()` totaliza todos los elementos de todos los vectores proporcionados, no realiza una suma elemento a elemento.
R suma todos los números contenidos en ambos vectores: 1+2+3+4+5+6 = 21.
`sum()` es capaz de recibir múltiples argumentos y combinarlos para realizar la suma total.
R procesa todos los argumentos numéricos pasados a la función `sum()`, no solo el primero.
Si el objeto `notas` contiene los valores 5.5, 6.0, 3.8, 6.9, 4.0, ¿qué función utilizarías para encontrar la nota más baja?
Busca la abreviatura de ‘mínimo’ comúnmente usada en programación.
En R, la función estándar para el valor mínimo es `min()`, no existe `low()` por defecto.
Esta función identifica y devuelve el valor numérico más pequeño dentro de un conjunto de datos.
`sort()` ordena los datos, pero no devuelve un valor único mínimo directamente.
Aunque incluye el mínimo, `summary()` devuelve un conjunto de estadísticas y no solo el valor individual.
¿Cuál es la diferencia principal entre `mean()` y `median()` al analizar un vector de notas?
Una requiere sumar todo y la otra requiere ordenar los datos primero.
El promedio suma y divide, mientras que la mediana ubica el punto medio de la distribución de datos.
Ambas funciones trabajan con cualquier tipo de dato numérico, independientemente de si tienen decimales.
El total se calcula con `sum()` y la desviación estándar con `sd()`.
Solo en distribuciones perfectamente simétricas coinciden; usualmente son valores distintos.
Si deseas obtener rápidamente el mínimo, los cuartiles, la mediana, la media y el máximo de un vector, ¿qué función es la más eficiente?
Busca una función cuyo nombre signifique ‘resumen’ en inglés.
`table()` se utiliza para contar frecuencias, no para calcular medidas de tendencia central o posición.
`sd()` solo proporciona la desviación estándar, que es una medida de dispersión.
Esta función genera un resumen estadístico completo que abarca las principales medidas descriptivas de una sola vez.
`length()` simplemente cuenta cuántos elementos hay en el vector.
¿Cómo se puede ordenar un vector de notas de mayor a menor utilizando la función `sort()`?
R utiliza valores lógicos (TRUE/FALSE) para modificar el comportamiento de sus funciones de ordenamiento.
Por defecto `sort()` ordena de forma ascendente; para invertirlo se debe especificar que sea decreciente.
El argumento correcto en la función `sort()` es `decreasing`, no `order`.
Sin argumentos adicionales, `sort()` ordena de menor a mayor (ascendente).
`max()` solo encuentra el valor más alto, no reorganiza el resto del vector.
¿Qué hace exactamente la función `rev()` al aplicarse a un vector?
Piensa en lo que sucede si pones un espejo al final de tu lista de datos.
Esa es la función de `sort()`.
`rev()` no analiza los valores numéricos, simplemente voltea la posición de los datos tal como están.
Para eliminar duplicados se utiliza la función `unique()`.
La función `rev()` se refiere a ‘reverse’ de posición, no a operaciones aritméticas de inversión.
¿Cuál es la utilidad de la función `table()` cuando analizamos las notas de un curso?
Esta función ayuda a identificar la ‘moda’ o los valores más repetidos.
`table()` resume datos existentes, no es una herramienta para la creación de estructuras complejas de bases de datos.
No realiza cálculos de promedio; se limita a contar ocurrencias de valores.
Es ideal para saber, por ejemplo, cuántos estudiantes obtuvieron un 4.0 exacto.
Aunque presenta los datos de forma tabular, su función principal es el conteo de frecuencias de los valores presentes.
Si tienes un vector con notas repetidas y quieres saber qué notas distintas se obtuvieron, sin repeticiones, ¿qué función usarías?
El nombre de esta función en inglés significa ‘único’.
`length()` te diría cuántas notas hay en total, incluyendo las repetidas.
Esta función extrae los elementos únicos y descarta cualquier aparición duplicada.
`sort()` agruparía las repetidas una junto a otra, pero no las eliminaría.
`summary()` da estadísticas generales pero mantiene la influencia de todos los datos originales.
¿Qué generará el comando `seq(10, 100, by = 10)`?
Analiza el significado del argumento ‘by’ como el tamaño del paso.
`seq()` es determinista y sigue un patrón, no genera valores aleatorios.
Los argumentos definen el inicio, el fin y el tamaño del salto (incremento).
El argumento `by` indica que se deben generar los valores intermedios siguiendo ese intervalo.
Eso sería una función `rep()`, no una secuencia (`seq()`).
¿Qué resultado produce la instrucción `rep(c("P1", "P2"), 3)`?
Imagina que copias y pegas el conjunto completo tres veces seguidas.
Cuando se pasa un vector a `rep()`, R repite el bloque completo el número de veces indicado.
Esa estructura requeriría el argumento `each`, mientras que el uso estándar de `rep` repite la serie completa.
`rep()` puede utilizarse con vectores de caracteres, lógicos o numéricos sin problemas.
No se pueden realizar sumas aritméticas con cadenas de texto.
En el contexto de buenas prácticas en R, ¿por qué se recomienda usar nombres descriptivos como `calcular_promedio` en lugar de algo como `f1`?
Piensa en el mantenimiento del código a largo plazo.
R permite números en los nombres (excepto al inicio), pero `f1` es válido aunque poco claro.
Un buen nombre actúa como documentación interna, explicando qué hace la función sin mirar el código.
El nombre de la función tiene un impacto nulo en el rendimiento o el uso de memoria del cálculo.
No existe ninguna restricción de longitud mínima para los nombres de los objetos en R.
¿Qué indica la desviación estándar (`sd()`) sobre las notas de un curso?
Es una medida que describe cuán heterogéneo u homogéneo es el grupo.
Esa descripción corresponde a la moda, no a la desviación estándar.
Una `sd` alta indica mucha variabilidad, mientras que una baja indica que las notas son similares entre sí.
Eso se conoce como ‘rango’, el cual se obtiene restando el `min` al `max`.
Para obtener ese porcentaje se requiere un cálculo lógico adicional, no una función estadística directa de dispersión.
Si ejecutamos `length(c(4.0, 5.5, 6.0))`, ¿cuál es el resultado?
Piensa en cuántos estudiantes rindieron la evaluación si esas fueran sus notas.
Ese valor se obtendría con `sum()`, no con `length()`.
La función `length()` devuelve la cantidad de elementos o posiciones que tiene el vector.
Ese valor aproximado sería el resultado de `mean()` (el promedio).
Aunque sea un solo objeto (el vector), `length()` cuenta los componentes individuales dentro de él.
Al crear una función, ¿qué sucede con los cálculos intermedios que no se incluyen en el `return()` ni son la última línea?
Considera el concepto de ‘caja negra’ de las funciones.
R no genera advertencias por cálculos realizados pero no devueltos.
Los cálculos se procesan para ser usados en líneas posteriores, pero si no se ‘devuelven’, se pierden al terminar la función.
Aunque ocupan tiempo de CPU, no causan inestabilidad en la función.
Las variables creadas dentro de una función son locales y desaparecen si no se retornan explícitamente.
¿Cuál es la forma más ordenada de usar funciones como `sum()` o `mean()` según las recomendaciones del material?
Se trata de separar los ‘datos’ de la ‘acción’.
Esto hace que el código sea difícil de leer y actualizar.
Utilizar objetos como `mis_notas <- c(…)` mantiene el código limpio, organizado y reutilizable.
Eso sería ineficiente y complicaría el uso de funciones estadísticas básicas.
`summary()` es informativo, pero a menudo necesitamos valores específicos para cálculos posteriores.
Si quieres generar el vector 1, 2, 3, 4, 5, 6, 7, ¿cuál de estas opciones es válida?
Busca la función que genera progresiones numéricas.
Esta función crea una secuencia regular partiendo del primer número hasta el segundo.
`rep()` necesita un segundo argumento para saber cuántas veces repetir.
`unique()` sirve para filtrar duplicados, no para generar secuencias.
`table()` generaría un conteo de frecuencia de una secuencia ya existente.
Dada la instrucción `calculadora_ramo <- function(nota_pres, nota_ex) { nota_final <- (nota_pres * 0.7) + (nota_ex * 0.3); return(nota_final) }`, ¿qué devuelve la función?
Observa los pesos asignados a cada nota en la fórmula.
La función solo devuelve `nota_final`, que es un único valor calculado.
La expresión dentro del `return()` especifica el cálculo de la nota final ponderada.
La fórmula utiliza pesos específicos (0.7 y 0.3) en lugar de un promedio simple.
En R, los decimales siempre se separan con punto (`.`).