Вы находитесь на странице: 1из 31

UNIDAD 4: MATRICES,

MARCOS DE DATOS Y LECTURA


DE DATOS EN R

Técnicas Inteligentes en Bioinformática


Má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 DATOS
o 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
datos se reciclan hasta completar la
 Los
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
 Lasoperaciones 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
 Lasmatrices deben tener el mismo número
de filas para concatenar por filas.

 Lasmatrices deben tener el mismo número


de columnas para concatenar por columnas.
MATRICES: funciones relevantes
 Lafunció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 DATOS
o 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
 Lafunció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.

Вам также может понравиться