Capítulo5 Calculadora sofisticada

Fecha de la última revisión

## [1] "2026-08-01"

Activar los siguientes paquetes

library(tidyverse)
library(datos)

El tema proviene de los siguientes sitios.

English: https://r4ds.had.co.nz/workflow-basics.html

Español: https://es.r4ds.hadley.nz/04-workflow-basics.html


5.1 Temas:

  • Conocimientos básicos de programación
  • La importancia de los nombres
  • Usando funciones

5.1.1 Sumar

2+2
## [1] 4

5.1.2 Exactamente como una calculadora

(23+3+3)^2+2
## [1] 843

5.1.3 Trigonometría

sin(pi/3)
## [1] 0.8660254

5.1.4 Log natural y a base 10

log(100)
## [1] 4.60517
log10(100)
## [1] 2

5.1.5 Asignaciones de variables

Para asignar un valor puedes usar <- o =, pero para comparar dos cosas se usa == (doble igual). Confundir = con == es uno de los errores más comunes al empezar. Encontrarás más errores frecuentes y cómo resolverlos en el capítulo Errores comunes (14).

x<- 4
x
## [1] 4
y=3
y
## [1] 3
x/y
## [1] 1.333333

5.1.6 Variables

  • la función “seq” para secuencia

seq(), c(), length() — crear y medir vectores.

  • c(1, 2, 3): combina valores en un vector; 11:20 genera una secuencia consecutiva.
  • seq(101, 110): secuencia con más control (inicio, fin, paso).
  • length(x): cuántos elementos tiene un vector.
edad_nd=seq(101, 110)
edad_nd
##  [1] 101 102 103 104 105 106 107 108 109 110
  • variables asignada
edad_uprh=c(11:20)
edad_uprh
##  [1] 11 12 13 14 15 16 17 18 19 20

5.1.7 Unir variables en un data frame

edad=data.frame(edad_nd, edad_uprh)
edad
##    edad_nd edad_uprh
## 1      101        11
## 2      102        12
## 3      103        13
## 4      104        14
## 5      105        15
## 6      106        16
## 7      107        17
## 8      108        18
## 9      109        19
## 10     110        20
edad$diff=edad$edad_nd-edad$edad_uprh
edad
##    edad_nd edad_uprh diff
## 1      101        11   90
## 2      102        12   90
## 3      103        13   90
## 4      104        14   90
## 5      105        15   90
## 6      106        16   90
## 7      107        17   90
## 8      108        18   90
## 9      109        19   90
## 10     110        20   90
edad$tres=edad$edad_uprh^3
edad
##    edad_nd edad_uprh diff tres
## 1      101        11   90 1331
## 2      102        12   90 1728
## 3      103        13   90 2197
## 4      104        14   90 2744
## 5      105        15   90 3375
## 6      106        16   90 4096
## 7      107        17   90 4913
## 8      108        18   90 5832
## 9      109        19   90 6859
## 10     110        20   90 8000

5.1.8 Errores cuando a variables no tienen la misma cantidad de entradas

edad_nd_1=base::seq(101, 111)
edad_nd_1
##  [1] 101 102 103 104 105 106 107 108 109 110 111
  • variables asignada
edad_uprh_1=c(11:20, NA)
edad_uprh_1
##  [1] 11 12 13 14 15 16 17 18 19 20 NA

5.1.9 Unir variables en un data frame

edad_1=data.frame(edad_nd_1, edad_uprh_1)
edad_1
##    edad_nd_1 edad_uprh_1
## 1        101          11
## 2        102          12
## 3        103          13
## 4        104          14
## 5        105          15
## 6        106          16
## 7        107          17
## 8        108          18
## 9        109          19
## 10       110          20
## 11       111          NA

5.1.10 Cuantos valores hay en una variable

length(edad_uprh)
## [1] 10
length(edad$tres)
## [1] 10
length(edad)
## [1] 4

5.1.11 Seleccionar solamente parte de los datos de un archivo

  • Primero visualizar los datos
library(datos)
millas
## # A tibble: 234 × 11
##    fabricante modelo     cilindrada  anio cilindros transmision traccion ciudad
##    <chr>      <chr>           <dbl> <int>     <int> <chr>       <chr>     <int>
##  1 audi       a4                1.8  1999         4 auto(l5)    d            18
##  2 audi       a4                1.8  1999         4 manual(m5)  d            21
##  3 audi       a4                2    2008         4 manual(m6)  d            20
##  4 audi       a4                2    2008         4 auto(av)    d            21
##  5 audi       a4                2.8  1999         6 auto(l5)    d            16
##  6 audi       a4                2.8  1999         6 manual(m5)  d            18
##  7 audi       a4                3.1  2008         6 auto(av)    d            18
##  8 audi       a4 quattro        1.8  1999         4 manual(m5)  4            18
##  9 audi       a4 quattro        1.8  1999         4 auto(l5)    4            16
## 10 audi       a4 quattro        2    2008         4 manual(m6)  4            20
## # ℹ 224 more rows
## # ℹ 3 more variables: autopista <int>, combustible <chr>, clase <chr>

5.1.11.1 Seleccionar los carros que tienen cilindros igual a 8 (solamente)

El pipe %>% lo creó Stefan Milton Bache en el paquete magrittr (2014); su nombre juega con el cuadro de Magritte “Ceci n’est pas une pipe”. Desde 2021, R incluye su propio pipe nativo |>.

La función de Pipe. %>% o |>

select() y filter() (paquete dplyr) — elegir columnas y filas.

  • select(columna): se queda con las columnas indicadas.
  • filter(condición): se queda con las filas que cumplen una condición (p. ej. cilindros == 8).
  • El pipe |> / %>%: encadena pasos, pasando el resultado de uno como entrada del siguiente.
library(tidyverse)
millas
## # A tibble: 234 × 11
##    fabricante modelo     cilindrada  anio cilindros transmision traccion ciudad
##    <chr>      <chr>           <dbl> <int>     <int> <chr>       <chr>     <int>
##  1 audi       a4                1.8  1999         4 auto(l5)    d            18
##  2 audi       a4                1.8  1999         4 manual(m5)  d            21
##  3 audi       a4                2    2008         4 manual(m6)  d            20
##  4 audi       a4                2    2008         4 auto(av)    d            21
##  5 audi       a4                2.8  1999         6 auto(l5)    d            16
##  6 audi       a4                2.8  1999         6 manual(m5)  d            18
##  7 audi       a4                3.1  2008         6 auto(av)    d            18
##  8 audi       a4 quattro        1.8  1999         4 manual(m5)  4            18
##  9 audi       a4 quattro        1.8  1999         4 auto(l5)    4            16
## 10 audi       a4 quattro        2    2008         4 manual(m6)  4            20
## # ℹ 224 more rows
## # ℹ 3 more variables: autopista <int>, combustible <chr>, clase <chr>
names(millas)
##  [1] "fabricante"  "modelo"      "cilindrada"  "anio"        "cilindros"  
##  [6] "transmision" "traccion"    "ciudad"      "autopista"   "combustible"
## [11] "clase"
millas |> dplyr::select(cilindros) |> 
  dplyr::filter(cilindros == 8)
## # A tibble: 70 × 1
##    cilindros
##        <int>
##  1         8
##  2         8
##  3         8
##  4         8
##  5         8
##  6         8
##  7         8
##  8         8
##  9         8
## 10         8
## # ℹ 60 more rows

5.1.11.2 Seleccionar los diamantes mayor de 3 quilate

diamantes |> dplyr::select(quilate) |> 
  filter(quilate > 3)
## # A tibble: 32 × 1
##    quilate
##      <dbl>
##  1    3.01
##  2    3.11
##  3    3.01
##  4    3.05
##  5    3.02
##  6    3.01
##  7    3.65
##  8    3.24
##  9    3.22
## 10    3.5 
## # ℹ 22 more rows

5.1.11.3 Seleccionar los diamantes con igual o mayor de 4000 precio

## # A tibble: 6 × 1
##   precio
##    <int>
## 1   4000
## 2   4001
## 3   4001
## 4   4001
## 5   4001
## 6   4002

5.1.11.4 Contabiliza cuantos diamantes tienen un valor de $4000 o más

nrow(dia_4000) 
## [1] 19380