Estructura de datos fundamentales
DEFINICIÓN DE VARIABLES
R funciona mediante objetos, estructuras de diferentes tipos que sirven para realizar
diferentes tareas. Una variable es un tipo de objeto que sirve para guardar datos.
X<-2
y<-3
x^3
x*y
x/y
x1<-49
x1^0.5
x1^2
x1^3
x1^2/3
………………….FUNCIONES …………………
x<-1:400
y<- sin(x/10)*exp(x*-0.01)
plot(x, y) # plot resultado
DEFINICIÓN DE FUNCIONES
A menudo querremos definir alguna función. Para ello tenemos que usar, en vez de
simplemente =, una construcción especial:
nombre_de_la_función=function(variable(s)){definición}.
Una vez definida una función, la podemos aplicar a valores de la(s) variable(s).
x
Veamos un ejemplo. Vamos a llamar f a la función x2 -2 , usando x como variable:
f<-function (x){x^2-2^x}
f (30) #La función f aplicada a 30
[1] – 1073740924
Se pueden definir funciones de dos o más variables con function, declarándolas todas. Por
2
ejemplo, para definir la función f(x; y) = e(2x-y) , tenemos que entrar
f= function (x, y){ exp ((2*x-y)^2)}
y ahora ya podemos aplicar esta función a pares de valores:
f(0, 1)
[1] 2.718282
f(1, 0)
[1] 54.59815
Números complejos (opcional)
Hasta aquí, hemos operado con números reales. Con R también podemos operar con
números complejos. Los signos para las operaciones son los mismos que en el caso real.
(2+5i)*3
[1] 6+15i
(2+5i)* (3+7i)
[1] - 29+29i
(2+5i)/(3+7i)
[1] 0.7068966+0.0172414 i
sqrt ([Link] (-3))
[1] 0+1.732051i
sqrt(2+3i)
[1] 1.674149+0.895977i
exp(2+3i)
[1] -7.31511+1.042744i
sin(2+3i)
[1] 9.154499-4.168907i
Re(4-7i)
[1] 4
Im(4-7i)
[1] -7
Mod(4-7i) # Modulo
[1] 8.062258
Arg (4-7i)
[1] - 1.051650
Conj(4-7i)
[1] 4+7i
z5<-2.4567890
print(z5, 5)
[1] 2.4568
Data frame
Se puede crear un [Link] de datos usando la [Link]() función en R. Esta función puede
tomar cualquier número de vectores de igual longitud como argumentos, junto con un argumento
opcional stringsAsFactors.
#Create a string vector to hold the names.
names <- c("Adam","Antony","Brian","Carl","Doug")
#Create an integer vector to hold the respective ages.
ages <- c(23,22,24,25,26)
#Build a dataframe from the two vectors
playerdata <- [Link](names,ages,stringsAsFactors = FALSE)
#Display the data frame
playerdata
names ages
1 Adam 23
2 Antony 22
3 Brian 24
4 Carl 25
5 Doug 26
playerdata$names
[1] "Adam" "Antony" "Brian" "Carl" "Doug"
playerdata[3,2]
[1] 24
names <-c("Akash","Amulya","Raju","Charita","Lokesh","Deepa","Ravi")
sex<-factor(c("M","F","M","F","M","F","M"))
age<-c(23,24,34,30,45,33,25)
emp<-[Link](names,sex,age, stringsAsFactors = FALSE)
emp
names sex age
1 Akash M 23
2 Amulya F 24
3 Raju M 34
4 Charita F 30
5 Lokesh M 45
6 Deepa F 33
7 Ravi M 25
#Check the dimensions of the data frame
dim(emp)
[1] 7 3
nrow(emp)
[1] 7
ncol(emp)
[1] 3
Sexo <-c("Hombre","Hombre","Mujer","Hombre","Hombre","Hombre","Mujer")
Edad <-c(17,18,20,18,18,18,19)
Hermanos <-c(2,0,0,1,1,1,0)
d.f1<- [Link](Sexo, Edad, Hermanos)
d.f1
Sexo Edad Hermanos
1 Hombre 17 2
2 Hombre 18 0
3 Mujer 20 0
4 Hombre 18 1
5 Hombre 18 1
6 Hombre 18 1
7 Mujer 19 0
#Check the dimensions of the data frame
dim(d.f1)
nrow(d.f1)
ncol(d.f1)
La función [Link] dispone de algunos parámetros que permiten ajustar a nuestras
necesidades el data frame que creamos. Los más útiles son los siguientes:
[Link]. Sirve para especificar los identificadores de las filas.
stringsAsFactors. Por defecto, [Link] convierte los vectores de palabras en factores.
Con stringsAsFactors=FALSE, imponemos que los vectores de palabras se mantengan como
tales en el data frame.
Veamos un ejemplo de aplicación de estos dos parámetros.
d.f2<- [Link](Sexo, Edad, Hermanos, stringsAsFactors =FALSE,
[Link] <-c("E1","E2","E3","E4","E5","E6","E7"))
d.f2
Sexo Edad Hermanos
E1 Hombre 17 2
E2 Hombre 18 0
E3 Mujer 20 0
E4 Hombre 18 1
E5 Hombre 18 1
E6 Hombre 18 1
E7 Mujer 19 0
str(d.f2)
’data . frame ’: 7 obs. of 3 variables :
$ Sexo : chr " Hombre " " Hombre " " Mujer " " Hombre " ...
$ Edad : num 17 18 20 18 18 18 19
$ Hermanos : num 2 0 0 1 1 1 0
d.f2$Sexo
Vectores y otros tipos de listas
Un vector es una secuencia ordenada de datos. R dispone de muchos tipos de datos, entre
los
que destacamos:
logical (lógicos: TRUE, verdadero, o FALSE, falso)
integer (números enteros)
numeric (números reales)
complex (números complejos)
character (palabras)
Construcción de vectores
Para definir un vector con unos elementos dados, por ejemplo
1, 5, 6, 2, 5, 7, 8, 3, 5, 2, 1, 0,
podemos aplicar la función c a estos elementos separados por comas.
x<-c(1 ,5 ,6 ,2 ,5 ,7 ,8 ,3 ,5 ,2 ,1 ,0)
x
[1] 1 5 6 2 5 7 8 3 5 2 1 0
x+2.5
[1] 4.5 7.5 10.5 13.5 16.5 19.5 22.5 25.5 28.5 31.5
sqrt(x)
[1] 1.414214 2.236068 2.828427 3.316625 3.741657 4.123106 4.472136
[8] 4.795832 5.099020 5.385165
length (x)
[1] 12
x<-c(1,5,6,2,5,7,8,3,5,2,1,0)
x
sqrt(x) # Raiz cuadrada
length(x) # Longitud
max(x) # Valor Maximo
min(x) # Valor Minimo
sum(x) # Suma
prod(x) # producto
mean(x) # promedio
cumsum(x) # Sumatoria
diff(x) # Diferencia
sort(x) # Sorteo
rev(x) # Revertir el sorteo
El primer tipo de objeto que vamos a introducir es el vector.
Algunas funciones de utilidad sobre los vectores
* Names()
Mediante la función names() podemos asignar nombre a los elementos de un vector. De
hecho, esta función permite dar nombre a los elementos de cualquier objeto. Aplicada a un
vector se hace de la siguiente forma:
x<-1:5
x
[1] 1 2 3 4 5
names(x)<-c(“I”,”II”,”III”,”IV”,”V”)
x
I II III IV V
* Seq()
La función seq() permite construir vectores que son sucesiones equiespaciadas, esta función
posee los siguientes argumentos:
from Valor inicial de la sucesión
to Valor final de la sucesión
by Espaciado entre los elementos
length Longitud del valor resultante
along Un objeto cuya longitud se usará para el objeto a construir.
Si no se indica algún argumento, por defecto vale 1
seq(1, 100, length = 5)
[1] 1.00 25.75 50.50 75.25 100.00
x <- c (1: 7)
x [seq (1, 7, by = 2)]
[1] 1 3 5 7
* Mode()
La función mode() devuelve o modifica el tipo de un objeto.
x = 1:5
mode(x)
[1] “numeric”
Operaciones básicas con vectores
Las operaciones básicas que podemos realizar con vectores las podemos resumir en la
siguiente tabla.
MATRICES
Una matriz de orden n _ m es una tabla rectangular de números (o, en algunas
situaciones específicas, algún otro tipo de datos: valores lógicos,
etiquetas. . . ) formada por n filas y m columnas. Una matriz es cuadrada
cuando tiene el mismo número de filas que de columnas, es decir,
cuando n = m; en este caso, decimos que la matriz es de orden n. En
matemáticas, es costumbre escribir las matrices rodeadas por paréntesis
para marcar con claridad sus límites.
2 1 −3 }
Por ejemplo: A= {−4 3 √ 3
es una matriz 2 x 3.
Operaciones con matrices
La matrix product is denoted by %*%,
while * represents the term-by-term product.
diag gives the vector of the diagonal elements of a matrix
crossprod replaces the product t(x)%*%y on either vectors or matrices
crossprod(x,y) more efficient
apply is easy to use for functions operating on matrices by row or column
Construcción de matrices
En R hay varias formas de crear una matriz:
Disponemos de dos maneras básicas de definir una matriz en R. En primer lugar, la
instrucción:
matrix(vector, nrow=n, byrow=valor lógico)
♦ Mediante la función matrix(), cuyos parámetros son:
♦ data Vector que contiene los valores que formarán la matriz. Debe tener en cuenta que
si no es suficientemente grande, se repetirá las veces que sea necesario
nrow Número de [Link] no especifica, se toma nrow =1
ncol Número de columnas
byrow Variable lógica que indica si la matriz debe construirse por filas o por columnas. El
valor predeterminado es F
dimnames Lista de longitud 2 con los nombres de las filas y las columnas.
♦ Mediante los operadores rbind() (para pegar vectores por filas) y cbind() (para pegar
vectores por columnas)
matriz = rbind (x1, x2,…)
matriz = cbind (x1, x2…)
donde en la función rbind(), x1 y x2, son las filas de la matriz, y en la función cbind() las
columnas.
M <- matrix( 1: 9, nrow = 3, byrow = TRUE) # la matriz se rrellena por filas
M
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
N <- matrix( 1: 9, nrow = 3, byrow = FALSE) # la matriz se rrellena por columnas
N
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
X<-[Link] (V1=c(1,1,2,3),V2=c(-1,0,3,0),V3=c(3,3,0,1))
X
V1 V2 V3
1 1 -1 3
2 1 0 3
3 2 3 0
4 3 0 1
sapply (X,mean) # Vector de medias
V1 V2 V3
1.75 0.50 1.75
sapply (X,var) # Vector de varianzas muestrales
V1 V2 V3
0.9166667 3.0000000 2.2500000
sapply (X,sd) # Vector de desviaciones típicas muestrales
V1 V2 V3
0.9574271 1.7320508 1.5000000
var_ver<- function (x){var (x)*( length (x)-1)/ length (x)} # Varianza "verdadera"
sd_ver<- function (x){sqrt (var_ver (x))} # Desv . tí pica " verdadera "
sapply (X, var_ver) # Vector de varianzas " verdaderas
V1 V2 V3
0.6875 2.2500 1.6875
sapply (X, sd_ver) # Vector de desviaciones tí picas " verdaderas "
V1 V2 V3
0.8291562 1.5000000 1.2990381
X_centrada = scale(X, center =TRUE, scale = FALSE ) #centra la tabla de datos X y divide sus
# columnas por sus desviaciones típicas muestrales; por lo tanto, no la tipifica según nuestra
# definición, ya que no las divide por sus desviaciones típicas «verdaderas».
X_centrada
V1 V2 V3
[1,] -0.75 -1.5 1.25
[2,] -0.75 -0.5 1.25
[3,] 0.25 2.5 -1.75
[4,] 1.25 -0.5 -0.75
attr(,"scaled:center")
V1 V2 V3
1.75 0.50 1.75
matrix(1:15, 3, 5)
[,1] [,2] [,3] [,4] [,5]
[1,] 1 4 7 10 13
[2,] 2 5 8 11 14
[3,] 3 6 9 12 15
Nota: Cuando la longitud del vector no coincide con el número de filas y columnas, los
elementos de la matriz se repiten, por lo que R te da un warning advirtiendo que las salidas
pueden no ser las deseadas.
matrix( 1:15, 4, 6)
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 5 9 13 2 6
[2,] 2 6 10 14 3 7
[3,] 3 7 11 15 4 8
[4,] 4 8 12 1 5 9
Warning message
In matrix(1:15, 4, 6) :
data length [15] is not a sub-multiple or multiple of the number of rows [4]
También podemos utilizar las funciones cbind y rbind para construir matrices:
v1<- c(1,2,3,4)
v2<- c(5,6,7,8)
v3<- c(9,10,11,12)
FA<- rbind(v1,v2,v3)
FA
[,1] [,2] [,3] [,4]
v1 1 2 3 4
v2 5 6 7 8
v3 9 10 11 12
QA<- cbind (v1, v2, v3)
QA
v1 v2 v3
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
matriz<- rbind (c(1,2,3), c(4,5,6), c(7,8,9))
matriz
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
matriz<- cbind (c(1,2,3), c(4,5,6), c(7,8,9))
matriz
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
Seleccionar los elementos de una matriz
Seleccionar el término que ocupa la posición primera fila, segunda columna,
[1, 2] de la matriz N:
La matriz N es la siguiente
matriz<-N(1:9)
N
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
N[1, 2]
[1] 4
Para seleccionar sólo una fila (columna), dejamos en blanco la posición de la columna
(fila)
Por ejemplo: Seleccionar
La segunda fila de la matriz N
N[2, ]
[1] 2 5 8
La tercera columna de la matriz N
N[ , 3 ]
[1] 7 8 9
Seleccionar la segunda y tercera fila
N[2:3, ]
[,1] [,2] [,3]
[1,] 2 5 8
[2,] 3 6 9
Seleccionar la segunda y tercera fila de las dos primeras columnas
N[2:3, 1:2]
[,1] [,2]
[1,] 2 5
[2,] 3 6
Ejemplos
box Plot
x<-c(1,2,3,4,5,6,2,3,2,3,4,2,2,3,2,2,5,7,3,4,2,1,3,6)
boxplot(x)
ENE<-c(1,2,3,4,5,6,2,3,2,3,4,2,2,3,2,2,5,7,3,4,2,1,3,6)
FEB<-c(5,1,3,5,5,4,1,2,5,5,4,4,1,5,5,4,1,2,6,1)
MAR<-c(3,5,6,1,2,3,1,2,5,1,5,2,4,2,6,5,2,1,4,4,1,6,5,5,4,6,4,5,4,5)
boxplot (ENE,FEB,MAR, names =c("ENE","FEB","MAR"), ylab ="Temp °C", col =
c("red","blue","green"))
Hoja de datos
La adaptación de la matriz de datos al uso habitual en Estadística es el objeto [Link]().
La diferencia fundamental con la matrix() de datos es que [Link]() no tiene por
qué estar compuesto de elementos del mismo tipo. Los objetos pueden ser vectores,
factores, matrices, listas e incluso hojas de datos.
Las matrices, listas y hojas de datos, contribuyen con tantas variables como columnas
tengan.
Los vectores numéricos y los factores se incluyen directamente y los vectores no
numéricos se fuerzan como factores.
Para referirnos a cualquier elemento de la hoja de datos utilizaremos dos índices, de
modo similar a una matriz.
mi_df <- [Link](
"entero" = 1:4,
"factor" = c("a", "b", "c", "d"),
"numero" = c(1.2, 3.4, 4.5, 5.6),
"cadena" = [Link](c("a", "b", "c", "d"))
)
mi_df
entero factor numero cadena
1 1 a 1.2 a
2 2 b 3.4 b
3 3 c 4.5 c
4 4 d 5.6 d
# Podemos usar dim() en un data frame
dim(mi_df)
# El largo de un data frame es igual a su número de columnas
length(mi_df)
# names() nos permite ver los nombres de las columnas
names(mi_df)
# La clase de un data frame es [Link]
class([Link])
Listas
Una lista es un objeto formado por objetos de varias clases. Una colección de elementos que
pueden ser de distintos tipos y que generalmente están identificados por un nombre. Para
crear una lista se utiliza la función list()
mi_vector <- 1:10
mi_matriz <- matrix(1:4, nrow = 2)
mi_df <- [Link]("num" = 1:3, "let" = c("a", "b", "c"))
mi_lista <- list("un_vector" = mi_vector, "una_matriz" = mi_matriz, "un_df" = mi_df)
mi_lista
$un_vector
[1] 1 2 3 4 5 6 7 8 9 10
$una_matriz
[,1] [,2]
[1,] 1 3
[2,] 2 4
$un_df
num let
1 1 a
2 2 b
3 3 c
Creamos una lista que contiene otras listas.
lista_recursiva <- list("lista1" = mi_lista, "lista2" = mi_lista)
# Resultado
lista_recursiva
length(lista_recursiva)
dim(lista_recursiva)
class(lista_recursiva)
$lista1
$lista1$un_vector
[1] 1 2 3 4 5 6 7 8 9 10
$lista1$una_matriz
[,1] [,2]
[1,] 1 3
[2,] 2 4
$lista1$un_df
num let
1 1 a
2 2 b
3 3 c
$lista2
$lista2$un_vector
[1] 1 2 3 4 5 6 7 8 9 10
$lista2$una_matriz
[,1] [,2]
[1,] 1 3
[2,] 2 4
$lista2$un_df
num let
1 1 a
2 2 b
3 3 c
COMO CONECTARSE A CARPETA DE TRABAJO EN R
Usar el comando setwd y cambiar el \ por /
Copiamos la ruta D:\Curso_UNMSM_MPDSIH_2020_2\S4_Taller_R
Lo cambiamos por:
Setwd(“D: /Curso_UNMSM_MPDSIH_2020_2/S4_Taller_R”)
setwd("D:/PISCO/Pisco_Mes") # Esta es la ruta de la carpeta donde esta Pisco
Lectura de datos desde ficheros externos TXT, CSV, XLS
# Instalar el paquete ‘readr’ el paquete más práctico para leer ficheros
planos&amp;lt;/span&amp;gt;
[Link]("readr")
# Cargar el paquete
library("readr")
setwd("D:/Curso IHC/Clase_S7_Parte1_04Dic20")
tusDatos <- read_csv("D:/Curso IHC/Clase_S7_Parte1_04Dic20/data_long_lat1.csv")
readtable()
Para leer un fichero .txt en R se emplea la función [Link]
[Link] (file, header, sep, quote, dec , [Link], [Link], [Link], [Link], skip)
file: Nombre del archivo a leer, que debe tener una línea por individuo
header: Es un valor lógico. Si es TRUE, la primera línea del archivo contiene los
nombres de las variables. Es conveniente especificar este campo explícitamente
sep: Separador entre campos. El valor predeterminado es uno o varios espacios en
blanco
dec: Separador decimal
quote: Conjunto de caracteres que delimitan cadenas de caracteres
[Link]: Especifica los nombres para las filas. Se puede especificar de dos formas:
Con un vector de cadenas de caracteres de la misma longitud que el número de filas o
mediante un nombre o número que indica un campo del archivo que contiene los
[Link] se deja en blanco, los nombres dependen de la existencia o no de un campo de
caracteres con valores distintos. Si lo hay, los utiliza como nombres, en caso contrario utiliza
como nombres los números de orden de cada fila. Esta última opción puede forzarse dando
a este parámetro el valor NULL.
[Link]: Especifica los nombres para las columnas o variables. Si no los indica aquí,
ni están incluidos en la primera fila del archivo, se construyen con la letra V y el número de
columna.
[Link]:Vector de valores lógicos que indica cómo tratar los campos no numéricos. El
valor predeterminado es FALSE con el cual dichos campos se transforman en factores, salvo
que se utilicen como nombres de filas. Si este vector es de longitud inferior al número de
campos no numéricos se repetirá las veces necesarias. También puede ser un vector
numérico que indica que columnas deben conservarse como caracteres.
[Link]: Vector de caracteres y controla con qué valor se indica un valor NA. Así,
podrá utilizar * para leer este tipo de datos procedentes de BMDP.
colClasses: Vector de caracteres que indica la clase de cada columna.
nrows:Número máximo de filas que se leerán.
skip:Indica el número de líneas del principio del archivo que deben saltarse sin leer.
[Link]: De tipo lógico, si es TRUE se comprueba que los nombres de variables
son correctos y que no hay duplicados.
fill: De tipo lógico, si es TRUE se completan las filas con blancos si es necesario.
[Link]: De tipo lógico, si es TRUE y se ha definido un separador, se eliminan los
espacios.
[Link]: De tipo lógico, si es TRUE se ignoran las líneas en blanco.
[Link]:Indica un carácter a partir del cual no se lee la línea, interpretándose
comoun comentario.
write()
La función write permite escribir un vector o una matriz en un archivo. La matriz debe ser
traspuesta para que coincida con la representación internade R.
write(x, file, ncolumns, append)
x: Objeto (vector o matriz)
file: Nombre del archivo
ncolumns:Número de columnas
append:Valor lógico que indica si los datos deben añadirse a los existentes en el
archivo.
Paquete “foreign”
Este paquete permite leer y escribir archivos existentes de otros formatosde EpiInfo,
Minitab, S, SAS, SPSS, Stata, Systat y Weka. Algunas funciones que permite hacer con esta
librería son:
[Link]
Exporta una hoja de datos en formato .sav para poder abrirlo y trabajar con él en SPSS. Sus
argumentos son:
[Link](file, [Link] = TRUE, [Link] = FALSE, [Link] = Inf,
[Link] = FALSE, trim_values = TRUE, reencode = NA, [Link] =
[Link])
file: Cadena de caracteres, el nombre del archivo o la dirección donde está guardado
[Link]: Convierte variables con etiquetas de valor a factores con esos
niveles
[Link]: Devuelve una hoja de datos
[Link]: Si [Link] = TRUE, entonces convierte en factores las variables
con etiquetas de valor, utilizando
[Link]: Valor lógico, recorta los espacios finales de los niveles de factor
reencode: valor lógico, cadenas de caracteres se vuelven a codificar a la localización
actual.
Otras funciones de este paquete son [Link], [Link], [Link], [Link], [Link],
ect. Para más información de este paquete consultar
Funciones en RStudio
Las funciones permiten realizar las diferentes acciones. Existen muchas funciones ya
definidas, algunas incluso pueden ser modificadas, pero una de las capacidades más
interesante es la posibilidad de crear nuevas funciones que realicen tareas que no estaban
definidas en el momento de instalar el [Link] nuevas funciones se incorporan al
lenguaje y, desde ese momento, se utilizan como las previamente existentes.
Una función se define asignando a un objeto la palabra function seguida de los argumentos,
escritos entre paréntesis y separados por comas y seguida de la orden, entre llaves si son
varias órdenes, que se quiera asignar.
ELEMENTOS DE UNA FUNCIÓN
NombreFuncion = funtion (argumentos función) {órdenes de la función return(Valor que
ha de devolver la función) }
NombreFuncion: Nombre que le daremos a la función
Argumentos función: Parámetros que debe de tener la función
órdenes de la función: Las líneas de órdenes que van a llevar a cabo que la función
dé el resultado deseado. Pueden ser condicionales, operadores lógicos, bucles, ect.
return( ): Es el valor que devuelve la función. Normalmente suele ser una lista.
OPERADORES DE RELACIÓN
! : Indica la negación
&: Indica la conjunción
| : Indica la disyunción
<,>, <= , >= , == son respectivamente los símbolos de menor, mayor, menor o igual,
mayor o igual, e igual.
CONDICIONALES
if (condición) acción1 [else acción2]
Esta estructura es escalar, ya que si la condición está formada por más de un elemento, sólo
considera el primero. En R y RStudio la función para los condicionales es
ifelse(parámetro1, parámetro2, parámetro3)
parámetro1 es la condición que se quiere avaluar
parámetro2 es la acción que se quiere hacer en el caso de que se cumpla la condición
parámetro3 es la acción se que realiza en el caso en que no se cumpla la condición.
ejemplo <- function(x){
suma = sum(x)
resultado = ifelse(suma < 100, TRUE, FALSE)
return(resultado)
}
x <- c(1:50)
y <- c(1:10)ejemplo(x)
[1] FALSE
ejemplo(y)
[1] TRUE
Esta función devuelve el valor lógico TRUE si la suma de los elementos del vector es menor
que 100 y FALSE en caso contrario.
BUCLES
for: Contador (recorre cada elemento del vector o matriz y efectúa una operación
con dicho elemento)
while: Condición (evalúa la condición y mientras esta es cierta se evalúa la acción)
repeat: Repetición (evalúa la acción indefinidamente)
factorialR <- function(x) {
if (x == 0) {
res <- 1
} else {
res <- x
while(x > 1){
res <- (x - 1) * res
x <- x - 1
}
}
return(res)
}
factorialR(8)
[1] 40320
factorialR(0)
[1] 1
bucle while
Supongamos que queremos saber el primer número entero positivo cuyo cuadrado
excede 4000. Para ello podriamos escribir:
# Inicializamos las variables
n <- 0
cuadrado <- 0
# Bucle while
while(cuadrado <= 4000) {
n <- n + 1
cuadrado <- n ^ 2
}
n # 64
[1] 64
cuadrado # 4096
[1] 4096
Suma de dos vectores
podemos crear un bucle while en R que sume dos vectores. En este caso, vamos a
sumar los vectores llamados x e y
x <- c(1, 2, 3, 4)
y <- c(0, 0, 5, 1)
n <- length(x)
i <- 0
z <- numeric(n)
while (i <= n) {
z[i] <- x[i] + y[i]
i <- i + 1
}
z
[1] 1 2 8 5
# Corre en R version 4.0.5
library(openxlsx)
library(chirps)
# Permite extraer datos a paso diario de precipitación de CHIRPS
#disponible desde 1981 hasta 2020, también hay datos diarios de 2021 hasta junio
lonlat <- [Link](lon = -76.73, -11.92) # Coordenadas de la Qda Quirio - Chosica
dates <- c("1982-01-01", "2020-12-31")
data <- get_chirps(lonlat, dates)
[Link](data,"D:\\pp_Quirio_chirps.xlsx")
# Corre en R version 4.0.5
library(openxlsx)
library(chirps)
# Permite extraer dato de Chirps, Imerg (GPM)
#disponible desde 2015 hasta junio del 2021
lonlat <- [Link](lon = -76.73, -11.92)
dates <- c("2016-01-01", "2021-06-30")
data <- get_imerg(lonlat, dates)
[Link](data,"D:\\pp_imerg.xlsx")
ENE<-c(.3,.37,.87,.49,1.19,1.38,.53,.67,1.17)
FEB<-c(.8,.86,.68,.82,1.65,1.97,.33,1.57,1.61)
MAR<-c(.62,.68,.86,.98,.63,.22,.54,1.26,.94)
ABR<-c(.28,.46,.6,.33,0,.21,.44,.78,.53)
MAY<-c(.27,.45,.43,.33,0,.2,.33,.57,.38)
JUN<-c(.23,.36,.35,.33,0,.19,.45,.29,.41)
JUL<-c(.22,.35,.31,.35,.26,.17,.35,.67,.37)
AGO<-c(.22,.34,.25,.34,.41,.19,.24,.57,.35)
SEP<-c(.19,.34,.19,.36,.24,.12,.2,.53,.38)
OCT<-c(.23,.32,.18,.36,.22,.11,.18,.56,.2)
NOV<-c(.27,.3,.38,.36,.31,.15,.18,.52,.25)
DIC<-c(.3,.44,.39,.46,.96,.44,.4,.57,.5)
boxplot(ENE,FEB,MAR,ABR,MAY,JUN,JUL,AGO,SEP,OCT,NOV,DIC,names=c("ENE","FEB","MAR","ABR",
"MAY","JUN","JUL","AGO","SEP","OCT","NOV","DIC"),ylab="TempC", col=c("red","blue","green"))
……………………………………
#Script para hallar los BOX PLOT:
ENE <- c(0.30,0.37,0.87,0.49,1.19,1.38,0.53,0.67,1.17)
FEB <- c(0.80,0.86,0.68,0.82,1.65,1.97,0.33,1.57,1.61)
MAR <- c(0.62,0.68,0.86,0.98,0.63,0.22,0.54,1.26,0.94)
ABR <- c(0.28,0.46,0.60,0.33,0,0.21,0.44,0.78,0.53)
MAY <- c(0.27,0.45,0.43,0.33,0,0.20,0.33,0.57,0.38)
JUN <- c(0.23,0.36,0.35,0.33,0,0.19,0.45,0.29,0.41)
JUL <- c(0.22,0.35,0.31,0.35,0.26,0.17,0.35,0.67,0.37)
AGO <- c(0.22,0.34,0.25,0.34,0.41,0.19,0.24,0.57,0.35)
SEP <- c(0.19,0.34,0.19,0.36,0.24,0.12,0.20,0.53,0.38)
OCT <- c(0.23,0.32,0.18,0.36,0.22,0.11,0.18,0.56,0.20)
NOV <- c(0.27,0.30,0.38,0.36,0.31,0.15,0.18,0.52,0.25)
DIC <- c(0.30,0.44,0.39,0.46,0.96,0.44,0.40,0.57,0.50)
data <- [Link](ENE,FEB,MAR,ABR,MAY,JUN,JUL,AGO,SEP,OCT,NOV,DIC)
color <- c("red","green","blue","yellow","orange","purple","pink",
"white","brown","black","lightblue","darkgreen")
boxplot(data, col = color)
RESULTADO
library(readxl) #Se carga la librería para leer el formato
setwd("D:/PISCO_DATOS/ Canete1_TemMax_Dia_21_Gpo5.xlsx ") #Se toma la ruta
elegida
data1 <- read_excel("d:/Curso IHC/Parcial/[Link]",sheet="Nivel_Rio")
data2 <- read_excel("d:/Curso IHC/Parcial/[Link]",sheet="Caudales_Medios") data3 <-
read_excel("d:/Curso IHC/Parcial/[Link]",sheet="Precipitacion_Diaria") data1;
data2;
data3 #Se muestra el Excel elegido
nuevos alumnos:
Nombre y Apellido:
Formación Profesional (Pregrado):
Fono_
Matricula:
Email:
Tema de Tesis:
Enviar a carlos.alvarado1@[Link]