Story Transcript
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 matriz.
Los
> matrix(1:3, nrow = 2, ncol = 3) [,1] [,2] [,3] [1,]
1
3
2
[2,]
2
1
3
MATRICES: constructores el argumento byrow podemos hacer que los elementos se coloquen por filas.
Mediante
> 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 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. La
> M 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) colnames(M) 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
1
4
Selección
tres cuatro 7
de columnas
> M[,3] uno 7
dos tres 8
10
9
cinco 13
MATRICES: accesores y modificadores
Selección por matriz de índices.
> IJ1 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)] 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)] 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] 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 v2 M1 M2 M3 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 función apply permite aplicar una función a todas las filas, columnas o elementos de una matriz.
La
> 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 peso sexo estudio 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) estudio peso altura sexo Marta
65
150
F
Inés
61
135
F
Juan
100
210
M
65
140
F
Carmen
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
65
140
Carmen
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 count.fields(“estudio.txt”) [1] 3 4 4 4 4
This work is licensed under the Creative Commons AttributionNonCommercial 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.