unidad 4: matrices, marcos de datos y …fran/tib/semana4.pdf · ciencias de la computación e...

Post on 25-Sep-2018

227 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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.

top related