Soluciones de la Práctica de la Unidad 1

Ejercicio 1

Para crear un nuevo script y guardarlo, podés seguir los ejemplos vistos en #sec-scripts. El contenido del script tiene que ser:

# Ejercicio 1
25 + 17
6 * 8
sqrt(144)

Ejercicio 2

  1. Para acceder a la documentación de la función round(), se puede ejecutar en la consola de R:
?round

o

help(round)
  1. Según la ayuda de R, la función round() tiene los siguientes argumentos:
  • x: El número o vector de números que se desea redondear.
  • digits: El número de cifras decimales al que se desea redondear x. Puede ser positivo (para redondear decimales) o negativo (para redondear a múltiplos de 10).
  • ...: representa el uso opcional de otros argumentos, es algo que podemos ignorar por ahora.
    • Obligatorio: x, ya que es el número a redondear.
    • Opcional: digits, que por defecto es 0, lo que significa que la función redondeará al número entero más cercano si no se especifica un valor distinto.
round(3.14159, digits = 0)  # Redondeo a 0 decimales → Resultado: 3
[1] 3
round(3.14159, digits = 1)  # Redondeo a 1 decimal → Resultado: 3.1
[1] 3.1
round(3.14159, digits = 2)  # Redondeo a 2 decimales → Resultado: 3.14
[1] 3.14
round(3.14159, 2)
[1] 3.14
round(x = 3.14159, digits = 2)
[1] 3.14
round(digits = 2, x = 3.14159)
[1] 3.14

Ejercicio 3

x <- 10
y <- "Hola"
z <- 5
  1. Podemos verificar el tipo de cada objeto con la función typeof():
typeof(x)
[1] "double"
typeof(y)
[1] "character"
typeof(z)
[1] "double"
  1. Ejecutamos la siguiente instrucción:
z <- x * 6

Ahora, z almacenará el valor:

z
[1] 60
  1. Obtenemos un error porque x es un número (double), mientras que y es un texto (character). En R, no es posible realizar operaciones matemáticas entre objetos de tipo diferente.
x + y
Error in x + y: non-numeric argument to binary operator

Ejercicio 4

load("practica1_ambiente.RData")

Se incorporaron 6 objetos al ambiente:

Identificador Tipo de vector Valor
var1 logical TRUE
var2 double 200.12
var3 character "hola"
var4 character "chau"
var5 integer -49L
var6 character "Hola"
typeof(var1)
[1] "logical"
typeof(var2)
[1] "double"
typeof(var3)
[1] "character"
typeof(var4)
[1] "character"
typeof(var5)
[1] "integer"
typeof(var6)
[1] "character"

Ejercicio 5

var2 < 0 || var5 < 0
[1] TRUE
var2 < 0 && var5 < 0
[1] FALSE
var2 %% (var5 + 100) < 10
[1] FALSE
  1. No son iguales porque uno tiene una letra mayúscula, “H” es un caracter distinto de “h” y por lo tanto son cadenas de texto diferentes.
var3 == var6
[1] FALSE

Ejercicio 6

Operación edad <- 21, altura <- 1.90 edad <- 17 , altura <- 1.90 edad <- 21, altura <- 1.50
(edad > 18) && (altura < 1.70) FALSE FALSE TRUE
(edad > 18) || (altura < 1.70) TRUE FALSE TRUE
!(edad > 18) FALSE TRUE FALSE

Verificación en R:

# Primera columna
edad <- 21
altura <- 1.90

(edad > 18) && (altura < 1.70)
[1] FALSE
(edad > 18) || (altura < 1.70)
[1] TRUE
!(edad > 18)
[1] FALSE
# Segunda columna
edad <- 17
altura <- 1.90

(edad > 18) && (altura < 1.70)
[1] FALSE
(edad > 18) || (altura < 1.70)
[1] FALSE
!(edad > 18)
[1] TRUE
# Tercera columna
edad <- 21
altura <- 1.50

(edad > 18) && (altura < 1.70)
[1] TRUE
(edad > 18) || (altura < 1.70)
[1] TRUE
!(edad > 18)
[1] FALSE

Ejercicio 7

Razonamiento paso a paso:

1 + 2 + (3 + 4) * ((5 * 6 %% 7 * 8) - 9) - 10
1 + 2 + (3 + 4) * ((5 * 6 * 8) - 9) - 10
1 + 2 + (3 + 4) * (240 - 9) - 10
1 + 2 + 7 * 231 - 10
1 + 2 + 1617 - 10
1610

Verificación en R:

1 + 2 + (3 + 4) * ((5 * 6 %% 7 * 8) - 9) - 10
[1] 1610

Ejercicio 8

Siempre es verdadera porque sea cual fuere x, siempre va a ser distinta a alguno de los dos, incluso si es 4, es distinta a 17 y viceversa.

Recordemos que:

  • != significa “distinto de”.
  • || es el operador “o” lógico (OR), que devuelve TRUE si al menos una de las condiciones es TRUE.

Luego, de la única forma para que la expresión sea FALSE, es que ambas condiciones sean FALSE al mismo tiempo. Veamos si esto es posible:

  • La primera condición (x != 4) es FALSE solo cuando x = 4.
  • La segunda condición (x != 17) es FALSE solo cuando x = 17.

Por lo visto, ambas condiciones no pueden ser FALSE simultáneamente, ya que un número no puede ser 4 y 17 al mismo tiempo. Dado que siempre hay al menos una condición que es TRUE, la expresión es siempre verdadera, sin importar el valor de x.

Ejercicio 9

El primer ítem excluye a los años terminados en 00, los cuales son evaluados en la segunda regla. El segundo ítem incluye automáticamente a los divisibles por 4 porque 400 es divisible por 4. Entonces, la operación lógica que determina si un año es bisiesto es: ((año %% 4 == 0) && (año %% 100 != 0)) || (año %% 400 == 0).

En R:

año <- 2024
((año %% 4 == 0) && (año %% 100 != 0)) || (año %% 400 == 0)
[1] TRUE
año <- 2025
((año %% 4 == 0) && (año %% 100 != 0)) || (año %% 400 == 0)
[1] FALSE

Ejercicio 10

  1. ¿Cuáles son los valores finales de a y b?
a <- 10
b <- a * 2
a <- a + 5
b <- b - a
a
[1] 15
b
[1] 5
  1. ¿Cuáles son los valores finales de m y n?
m <- 5
n <- 2 * m
m <- m + 3
n <- n + m
m <- n - 4
m
[1] 14
n
[1] 18
  1. ¿Cuál es el valor final de y?
x <- 6
y <- 2
x <- x / y + x * y
y <- x^2 %% 10
y <- y * 2
y
[1] 10
  1. ¿Cuál es el valor final de resultado?
a <- 5
b <- 2
c <- 3

resultado <- a^b - (c * b) + (a %% c)
resultado
[1] 21
  1. ¿Cuáles son los valores finales de x, y y z?
x <- 8
y <- 3
z <- 2

x <- x %% y + z^y
y <- (x + y) %/% z
z <- z + x - y
x
[1] 10
y
[1] 6
z
[1] 6

Ejercicio 11

Se pueden cambiar los valores de a, b y h.

a <- 5
b <- 4
h <- 3
volumen <- a * b * h
area <- 2 * (a * b + a * h + b * h)
cat("El área es igual a", area, "y el volumen es igual a", volumen)
El área es igual a 94 y el volumen es igual a 60

Ejercicio 12

  1. Para identificar la ruta informática de un archivo, podés seguir los pasos mostrados en Carpetas, archivos y rutas informáticas.
  2. Se puede saber cuál es el working directory con:
getwd()

Ejercicio 13

El resultado de crear las carpetas y subcarpetas tiene que ser similar al que se ve en la Figura 5.2. El proyecto se crea desde RStudio siguiendo los pasos de la Figura 5.4.