Publicado el 28 de Septiembre del 2018
937 visualizaciones desde el 28 de Septiembre del 2018
345,4 KB
20 paginas
Creado hace 8a (03/02/2017)
R como instrumento de trabajoLa sintaxis de R en la
práctica
versión: Fri Feb 3 14:50:27 2017
1. Sintaxis de R: breve repaso
En este documento se recogen los aspectos mas relevante del uso de R y que permiten iniciarse en el uso de
esta potente herramienta.
2. Expresiones
R evalúa expresiones.
Las expresiones se escriben siguiendo una sintaxis precisa.
Existe muchas alternativas para obtener un mismo resultado.
Las expresiones contienen:
• valores
• funciones
• objetos
• operadores
• espacios en blanco: tanto como desee para mejorar la lectura
• El carácter # genera un comentario a su derecha
En la expresiones cualquier valor puede ser sustituido por una expresión.
Para definir un procedimiento de cálculo o programa recurrimos a un conjunto de expresiones de acuerdo a
un algoritmo. Estos procedimiento son secuenciales, se evalúan las expresiones empezando por la primera, en
un proceso secuencial.
3. Valores
Podemos utilizar valores numéricos, lógicos o de texto; operadores aritméticos o lógicos y funciones para
realizar un sin fin de procedimientos.
3.1. Valores numéricos
Los valores numéricos en R pueden ser enteros, reales o complejos; pueden aparecer de forma individual o en
conjuntos (ver vectores, matrices y otros).
Las operaciones que devuelven una indeterminación proporcionan el valor correspondiente: −∞, se representa
por -Inf, o ∞, se representa por Inf; las que no tiene un resultado numérico devuelven NaN: not is a number;
y cuando el valor no existe encontramos NA, not available o missing value, para indicarlo.
Los siguientes ejemplos muestran el uso de valores numéricos entreros y reales.
> 2
[1] 2
> 0.021
1
[1] 0.021
> 1e6
[1] 1e+06
> 1e6 + 1
[1] 1000001
# valor de tipo real
# resultado entero
3.1.1. Conversión
> 1e7
[1] 1e+07
> as.integer( 1e7 )
# Entero muy grande
[1] 10000000
> as.integer( 1e10 ) # No cabe en la definición de entero
Warning: NAs introduced by coercion to integer range
[1] NA
3.1.2. Redondeando
> 1/3
[1] 0.3333333
> options( digits = 3 )
> 1/3
[1] 0.333
> log( 2 ) # logaritmo natural base e
[1] 0.693
> 1e6 + 1
[1] 1e+06
# resultado entero?
3.1.3. Series
> 1:10
[1] 1 2 3 4
5
> seq( 0, pi, 0.1 )
6 7 8
9 10
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8
[20] 1.9 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1
2
3.1.4. Valores no numéricos
> sqrt( -9 )
Warning in sqrt(-9): Se han producido NaNs
[1] NaN
> sqrt( as.complex( -9 ) ) # La raíz de un valor negativo
[1] 0+3i
> 1 / 0
[1] Inf
> log( -1 )
# No existe el logaritmo
Warning in log(-1): Se han producido NaNs
[1] NaN
> log( 0 )
[1] -Inf
> curve( log, 0, 100 ) # representación de la función logaritmo
3
02040608010001234xlog(x)3.2. Textuales (string)
Los valores de texto facilitan manejar la información cualitativa o la producción de mensajes para una lectura
humanizada.
> "Casa"
[1] "Casa"
> "Casa" == "casa"
# Sensibilidad a mayúsculas
[1] FALSE
> paste ( "Casa", 1:10, sep = " número " )
"Casa número 2"
"Casa número 6"
"Casa número 10"
[1] "Casa número 1"
[5] "Casa número 5"
[9] "Casa número 9"
> # 1 + "1"
>
> # read.table( "http://www.um.es/docencia/emc/datos/biom2003.dat" )
# ¡No es posible!
"Casa número 3"
"Casa número 7"
"Casa número 4"
"Casa número 8"
4. Operadores
4.1. Operadores aritméticos
En R encontramos los operadores habituales: suma, restas, productos, cocientes y potencias (+, -, *, /, ˆ) a
los que se añaden otros menos conocidos como :, para generar series, o % % para conseguir el resto del cociente
entero, u operadores específicos para producto de matrices ( %* %). La jerarquía de la operación es también la
habitual y puede alterarse con el uso de paréntesis. Ante la duda es conveniente el uso de paréntesis.
> 3 ^ 2
# Operador potencia
[1] 9
> 10:1
[1] 10 9 8 7
> 3 + 2 * 5
[1] 13
> 1 / ( 2 * 5 )
[1] 0.1
> 1/ 2 / 5
[1] 0.1
# Operador de serie
6
5 4 3
2
1
# El producto tiene prioridad
# Cociente con numerador "forzado por paréntesis"
# El mismo cociente anterior
4.2. Jerarquía de operación
> 3 ^ 2
[1] 9
# Operador potencia
4
> 3 ^ 1 / 2
# La potencia tiene prioridad
[1] 1.5
> 3 + 2 * 5
[1] 13
> 1 / ( 2 * 5 )
[1] 0.1
> 1 / 2 / 5
[1] 0.1
# El producto tiene prioridad
# Cociente con numerador "forzado por paréntesis"
# El mismo cociente anterior
4.3. Operadores y series
> 2 ^ 0:8
# La potencia tiene prioridad
[1] 1 2 3 4 5 6 7 8
> 3 + 2 * 1:5
[1] 5 7 9 11 13
> 3 + ( 2 * 1 ):5
[1] 5 6 7 8
> 1:10 %% 2
# La serie tiene prioridad
# Alteramos la jerarquía
[1] 1 0 1 0 1 0 1 0 1 0
4.4. Operadores lógicos
La posibilidad de automatizar procedimientos requiere la evaluación lógica, para ellas se utilizan los operadores
lógicos, comparan entre dos expresiones
== !=: Igual a, distinto a
> >=: mayor, mayor o igual
< <=: menor, menor o igual
&: AND verdadero si ambas expresiones son ciertas
|: OR verdadero si al menos una de las expresiones es cierta
!: NOY operador de negación que afecta a una sola expresión
4.5.
Igual o distinto
> 3 == 2
# Comparación igualdad
[1] FALSE
> 5 != 4
[1] TRUE
# Comparación desigualdad
5
> 3 > 2
# Es mayor
# Negación
[1] TRUE
> ! 3 > 2
[1] FALSE
> ! TRUE
[1] FALSE
4.5.1. Operaciones con valores lógicos
> TRUE
[1] TRUE
> TRUE + 1
[1] 2
> FALSE + 1
[1] 1
> # ¿qué número es verdadero?
> as.logical( 1 )
[1] TRUE
> as.logical( 0 )
[1] FALSE
4.5.2.
¿Iguales?
> 0 != 0.0000000000000001 # ¿son iguales?
[1] TRUE
> 5 %% 2 != 0
[1] TRUE
> 3 > 2 & 5 %% 2 != 0
[1] TRUE
> 1:5 > 2
# ¿El resto de 5 entre dos es 0?
# Resultado OR de dos expresiones
# evaluación de un conjunto
[1] FALSE FALSE TRUE
TRUE
TRUE
5. Funciones
Las funciones podemos considerarlas como programas dentro del programa R; esencialmente están asociadas
a un nombre, que sigue las mismas reglas que cualquier objeto de R, y a un conjunto de argumentos, que son
propios de cada función.
6
> # nomreDeLaFuncion( argumento1, argumento1, ... )
> # argumento: expresión
> # plot( hclust( dist( swiss ), method = "mcquitty" ), hang = -1 )
El tabulador nos es útil tanto para completar el nombre de la función como dentro del paréntesis ya que
actúa como ayuda informando de los argumentos esperados.
5.1. Una función para conocerlas a todas
> help( swiss )
5.2. En la práctica
En muchas ocasiones no es necesario indicar más que alguno de los argumentos, lo que facilita el uso.
> log( 2 )
# logaritmo natural de 2
[1] 0.693
> log( 2, 10 )
[1] 0.301
> exp( 1 )
# logaritmo en base 10
# función exponencial
[1] 2.72
> log( exp( 1 ) ) # ¡¡¡Uno!!!
[1] 1
5.3. Nombres y orden de los argumentos
> log( x = 2, base = 10 ) # indicando el nombre de los argumentos
[1] 0.301
> log( base = 10, x = 2 ) # alterando el orden de los argumentos
[1] 0.301
5.4. Más sobre series
> seq( 0, 2, 0.1 )
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8
[20] 1.9 2.0
> seq( from = 0, to = 2, by = 0.1 )
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8
[20] 1.9 2.0
7
> seq( to = 2, by = 0.1, from = 0 )
[1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8
[20] 1.9 2.0
5.5. Pero ¿cuántas funciones hay?
El número de funciones disponibles en R crece día a día, para buscar información:
Buscar funciones
Una estimación actualizada
¿Pero cuantas necesito conocer?
• No solo no necesitamos aprenderlas todas para usar R: ¡es imposible!
• Una “chuleta” de funciones: R reference card V2
• Documentación y el buscador no ayudarán mucho para localizar la funciones, y los procedimientos,
necesarios
6. Objetos en R
Las ventajas del uso de un lenguaje es la generalización de un procedimiento de cálculo y esto conlleva el uso
de variables que contienen los valores particulares de cada caso. Para utilizar una variable es necesario que se
asigne, anteriormente, un valor a ella, de lo contrario obtendremos un error como resultado que indica la
inexistencia de tal variable.
La asignación ser realiza mediante un operador específico y no debe leerse como igualdad:
<-: “asignar a la izquierda (dos caracteres)
->, “asignar a la derecha
=, “asignar a la izquierda
> x <- 3
>
> x
# creamos el objeto x
# que toma el valor de la expresión
# para conocer el valor de un objeto
[1] 3
> 1 / 5 -> y
> pi
[1] 3.14
# valor predefinido
6.1. Alternativas de asignación
> y <- 5 * 9 / 2
> "Carmolí" -> localidad
> n = 30
>
> ( m <- 25 ^ 2 )
# y toma el valor de la expresión de la derecha
# Asignación a la derecha
# asignación no recomendada
# evita tener que evaluar la expresión m
8
[1] 625
>
# para ver su contenido
6.2. La asignación es destructiva
> i <- 1
> i
# La última asignación el la que vale
[1] 1
> i <- i + 1
>
> ( i <- i + 1 ) # Aumentamos nuevamente el valor de i
# Aumentamos el valor de i
[1] 3
6.3. Aprovechando los objetos
# Guardando un valor lógico
> control <- TRUE
> solucion <- sqrt( as.complex( x ) ) # Previniendo valores negativos
>
> pesoIndividuo
<- 70
> longitudIndividuo <- 180
>
> indiceCorporal <- pesoIndividuo / longitudIndividuo
# buenos nombres de objetos
6.4. Aprovechando más los objetos
<- c( 110, 100, 125 ) # g: gramos
> pesoIndividuo
> longitudIndividuo <- c( 100, 105, 110 ) # mm: milímetros
>
> indiceCorporal <- pesoIndividuo /
+
Los nombres de los objetos son un conjunto de caracteres, el primero una letra; las letras permitidas son las
del alfabeto inglés; pueden utilizarse las cifras de 0 a 9, y opcionalmente el punto (.) o la barra baja (_), si
bien no son muy recomendables. Debe evitarse que el nombre pueda ser interpretado como una expresión, ya
que R devolverá un error.
longitudIndividuo # lectura mejorada de expresiones
6.5. Vectores
La potencia de los lenguajes es el uso de conjuntos de valores ordenados, a esto los llamamos vectores; en
ellos podemos guardar cualquier tipo de valor pero todos deber ser del mismo tipo.
Habitualmente, los conjuntos de datos grandes se almacenan en fichero de datos, pero,
Comentarios de: R como instrumento de trabajo - La sintaxis de R en la práctica (0)
No hay comentarios