UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e...
Transcript of UNIDAD 4: MATRICES, MARCOS DE DATOS Y …fran/TIB/semana4.pdf · Ciencias de la Computación e...
UNIDAD 4: MATRICES, MARCOS DE DATOS Y LECTURA
DE DATOS EN R
Técnicas Inteligentes en BioinformáticaMáster en Lógica, Computación e Inteligencia Artificial Dpto. Ciencias de la Computación e Inteligencia Artificial
Francisco J. Romero Campero
Universidad de Sevilla
TIPOS DE DATOSo Simples:
Numéricos Lógicos Caracteres Cadenas
o Compuestos Vectores Listas Matrices Marcos de datos
MATRICES: constructores Colección de datos del mismo tipo que tiene
dos dimensiones. Para crear una matriz usamos la función
matrix Los elementos se proporcionan en un vector y
se colocan por columnas.
> matrix(1:10, nrow = 2, ncol = 5)
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10
MATRICES: constructores Los datos se reciclan hasta completar la
matriz.
> matrix(1:3, nrow = 2, ncol = 3)
[,1] [,2] [,3]
[1,] 1 3 2
[2,] 2 1 3
MATRICES: constructores Mediante el argumento byrow podemos hacer
que los elementos se coloquen por filas.
> matrix(1:10, nrow = 2, ncol = 5, byrow = TRUE)
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
MATRICES: accesores y modificadores La función dim devuelve las dimensiones de
la matriz. La función nrow devuelve el número de filas. La función ncol devuelve el número de
columnas.> M <- matrix(1:15, nrow = 3, ncol = 5)
> dim(M)
[1] 3 5
> nrow(M)
[1] 3
> ncol(M)
[1] 5
MATRICES: accesores y modificadores Podemos acceder a los elementos de una
matriz mediante sus índices.> dim(M)
[1] 3 5
> M[1, 2]
[1] 4
> M[2, 5]
[1] 14
> M[5, 3]
Error: subíndice fuera de los límites
MATRICES: accesores y modificadores Las filas y las columnas pueden tener
nombres
> rownames(M) <- c("uno", "dos", "tres")
> colnames(M) <- c("uno", "dos", "tres", "cuatro", "cinco")
> M
uno dos tres cuatro cinco
uno 1 4 7 10 13
dos 2 5 8 11 14
tres 3 6 9 12 15
MATRICES: accesores y modificadores Podemos seleccionar un elemento por el nombre
de su fila y su columna> M["dos", "tres"]
[1] 8
Selección de filas> M[1,]
uno dos tres cuatro cinco
1 4 7 10 13
Selección de columnas> M[,3]
uno dos tres
7 8 9
MATRICES: accesores y modificadores Selección por matriz de índices.> IJ1 <- matrix(c(1, 1, 1, 4, 2, 3), ncol = 2, byrow = TRUE)
> M[IJ1] # Los elementos (1,1)-ésimo, (1,4)-ésimo y (2,3)-ésimo de M
[1] 1 10 8
MATRICES: accesores y modificadores Modificación de los elementos de una matriz> M[c(1, 2), c(1, 3, 4)] <- 0
> M
uno dos tres cuatro cinco
uno 0 4 0 0 13
dos 0 5 0 0 14
tres 3 6 9 12 15
MATRICES: accesores y modificadores Modificación de los elementos de una matriz> M[c(1, 2), c(1, 3, 4)] <- c(-1, -2, -3)
> M
uno dos tres cuatro cinco
uno -1 4 -3 -2 13
dos -2 5 -1 -3 14
tres 3 6 9 12 15
Todos los elementos deben ser del mismo tipo, en caso contrario, R realiza un ajuste.
> M[1, 1] <- "-1"
> M
uno dos tres cuatro cinco
uno "-1" "4" "-3" "-2" "13"
dos "-2" "5" "-1" "-3" "14"
tres "3" "6" "9" "12" "15"
MATRICES: funciones relevantes Las operaciones aritmético-lógicas se realizan
elemento a elemento.
> v1 <- seq(1, 11, by = 2)
> v2 <- seq(0, 10, by = 2)
> M1 <- matrix(v1, nrow = 2)
> M2 <- matrix(v2, nrow = 2)
> M3 <- matrix(v1, nrow = 3)
MATRICES: funciones relevantes> M1
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 3 7 11
> M2
[,1] [,2] [,3]
[1,] 0 4 8
[2,] 2 6 10
> M3
[,1] [,2]
[1,] 1 7
[2,] 3 9
[3,] 5 11
MATRICES: funciones relevantes> M1 + M2 # Suma elemento a elemento.
[,1] [,2] [,3]
[1,] 1 9 17
[2,] 5 13 21
> M1 * M2 # Multiplicación elemento a elemento
[,1] [,2] [,3]
[1,] 0 20 72
[2,] 6 42 110
MATRICES: funciones relevantes Multiplicación de matrices (filas x columnas)> M1 %*% M3
[,1] [,2]
[1,] 61 151
[2,] 79 205
Al aplicar operaciones aritmético-lógicas, las matrices deben tener el mismo número de filas y columnas.
En el caso de la multiplicación %*%, el nº de columnas de la primera matriz debe ser igual al nº de filas de la segunda matriz
MATRICES: funciones relevantes Concatenación de matrices> cbind(M1, M2) # Concatena las matrices por columnas
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 5 9 0 4 8
[2,] 3 7 11 2 6 10
> rbind(M1, M2) # Concatena las matrices por filas
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 3 7 11
[3,] 0 4 8
[4,] 2 6 10
MATRICES: funciones relevantes Las matrices deben tener el mismo número
de filas para concatenar por filas.
Las matrices deben tener el mismo número de columnas para concatenar por columnas.
MATRICES: funciones relevantes La función apply permite aplicar una función
a todas las filas, columnas o elementos de una matriz.
> apply(M1, 1, mean) # Calcula la media de cada fila
[1] 5 7
> apply(M1, 2, mean) # Calcula la media de cada columna
[1] 2 6 10
> apply(M1, c(1, 2), sqrt) # Calcula la raíz cuadrada de cada elemento.
[,1] [,2] [,3]
[1,] 1.000000 2.236068 3.000000
[2,] 1.732051 2.645751 3.316625
MATRICES: funciones relevantes Otras funciones útiles:> rowSums(M1)
[1] 15 21
> colSums(M1)
[1] 4 12 20
> rowMeans(M1)
[1] 5 7
> colMeans(M1)
[1] 2 6 10
TIPOS DE DATOSo Simples:
Numéricos Lógicos Caracteres Cadenas
o Compuestos Vectores Listas Matrices Marcos de datos
MARCOS DE DATOS: constructores Estructura más genérica que una matriz. Es como una matriz con la posibilidad de
tener elementos de distintos tipos en las columnas.
Para crear un marco de datos se utiliza la función data.frame
> altura <- c(150, 135, 210, 140)
> peso <- c(65, 61, 100, 65)
> sexo <- c("F", "F", "M", "F")
> estudio <- data.frame(peso,altura,sexo)
MARCOS DE DATOS: constructores Las columnas reciben el nombre de las variables
que se utilizaron. Por defecto, las filas reciben los nombres
“1”,”2”,”3”,...> estudio
peso altura sexo
1 65 150 F
2 61 135 F
3 100 210 M
4 65 140 F
> rownames(estudio)
[1] "1" "2" "3" "4"
> colnames(estudio)
[1] "peso" "altura" "sexo"
MARCOS DE DATOS: constructores Podemos definir el nombre de las filas> rownames(estudio) <- c("Marta", "Inés", "Juan", "Carmen")
> estudio
peso altura sexo
Marta 65 150 F
Inés 61 135 F
Juan 100 210 M
Carmen 65 140 F
MARCOS DE DATOS: accesores Acceso a datos> estudio["Marta", "peso"] # El peso de Marta
[1] 65
> estudio[, "peso"] # La columna de pesos. Es un vector.
[1] 65 61 100 65
> estudio["Marta",] # Los datos de Marta. Es un marco de datos.
peso altura sexo
Marta 65 150 F
MARCOS DE DATOS: accesores Acceso a datos> estudio[["peso"]] # La columna de pesos. Es un vector.
[1] 65 61 100 65
> estudio[c("peso", "altura")] # Las columnas de pesos y alturas. Es un marco de datos.
peso altura
Marta 65 150
Inés 61 135
Juan 100 210
Carmen 65 140
LECTURA DE DATOS Podemos leer un marco de datos desde un
fichero de texto mediante la función read.table El fichero debe seguir un formato:
Todas las filas deben tener el mismo número de elementos, salvo la primera, que tiene uno menos.
La primera fila contiene los nombres de las columnas. El resto de filas contienen como primer elemento e nombre de la fila y como resto de elementos los datos.
Los datos se separan por espacios en blanco.La coma de los decimales es un punto (.)Los valores desconocidos se expresan como NA
LECTURA DE DATOS Ejemplo de fichero: estudio.txt
“Peso” “altura” “sexo”
“Marta” 65 150 “F”
“Inés” 61 135 “F”
“Juan” 100 210 “M”
“Carmen” 65 140 “F”
Lectura del fichero> estudio1 <- read.table(“estudio.txt”)
LECTURA DE DATOS La función count.fields cuenta los elementos
de cada fila de un fichero.
> count.fields(“estudio.txt”)
[1] 3 4 4 4 4
This work is licensed under the Creative Commons Attribution-NonCommercial NoDerivs 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/3.0/.
Estas transparencias están basadas en el material docente desarrollado por Francisco J. Romero Campero e Ignacio Pérez Hurtado de Mendoza para la asignatura Informática Aplicada a la Bioquímica del Grado Conjunto en Bioquímica por la Universidad de Sevilla y la Universidad de Málaga (Andalucía Tech). Este trabajo está liberado bajo la licencia Creative Commons Attribution-NonCommercial NoDerivs 3.0 Unported License.