Inferencia Estadı́stica II Introducción a R Los comandos elementales son expresiones o asignaciones a una variable. • Una expresión es un comando que simplemente muestra el resultado de un cálculo, el cual no se mantiene en la memoria del ordenador. • Una asignación pasa el resultado de un cálculo a una variable cuyo nombre se guarda en la memoria del ordenador. > 3+8.6*1.5^2 [1] 22.35 > x<- 3+8.6*1.5^2 > x [1] 22.35 Todas las variables ( y otros objetos de R) se guardan en el ordenador hasta que los sobreescribamos o se borren explı́citamente con el comando rm(). Una lista de las variables guardadas se obtiene con ls() o objects(). Hay que notar que todos las funciones de R van seguidas de paréntesis (). Si escribimos el nombre de una función sin ellos, saldrá el código en R > 3.1415-> y > ls() [1] "x" "y" > rm(x) > objects() [1] "y" > rm function (..., list = character(0), pos = -1, envir = as.environment(pos), inherits = FALSE) { dots <- match.call(expand.dots = FALSE)$... if (length(dots) && !all(sapply(dots, function(x) is.symbol(x) || is.character(x)))) stop("... must contain names or character strings") names <- sapply(dots, as.character) if (length(names) == 0) names <- character(0) list <- .Primitive("c")(list, names) .Internal(remove(list, envir, inherits)) 1 } <environment: namespace:base> El comando c() de concatenar se usa para crear vectores en R. También se pueden crear secuencias. La expresión 1 : n crea valores de 1 a n y que difieren en 1, es decir 1, 2, 3, . . . , n. Para secuencias más generales se puede usar el comando seq(i, j, k), donde i es el punto inicial, j es el final y k es el discrimante entre dos puntos. Para más información sobre este comando se puede hacer ?seq > x<-c(5.4,1 ,4,7.8) > x [1] 5.4 1.0 4.0 7.8 > y<-c(x,4,x) > y [1] 5.4 1.0 4.0 7.8 4.0 5.4 1.0 4.0 > z<-1:4 > z [1] 1 2 3 4 > seq(1,10, by=0.1) [1] 1.0 1.1 1.2 1.3 1.4 1.5 [16] 2.5 2.6 2.7 2.8 2.9 3.0 [31] 4.0 4.1 4.2 4.3 4.4 4.5 [46] 5.5 5.6 5.7 5.8 5.9 6.0 [61] 7.0 7.1 7.2 7.3 7.4 7.5 [76] 8.5 8.6 8.7 8.8 8.9 9.0 [91] 10.0 7.8 1.6 3.1 4.6 6.1 7.6 9.1 1.7 3.2 4.7 6.2 7.7 9.2 1.8 3.3 4.8 6.3 7.8 9.3 1.9 3.4 4.9 6.4 7.9 9.4 2.0 3.5 5.0 6.5 8.0 9.5 2.1 3.6 5.1 6.6 8.1 9.6 R usa +, - * / para los cálculos aritméticos básicos y el gorro para el exponente. Las operaciones con vectores se hacen elemento a elemento. > x<-c(1,2) > y<-c(1,2,3,4) > x*y [1] 1 4 3 8 > 2*x [1] 2 4 > 3+y [1] 4 5 6 7 > x-y 2 2.2 3.7 5.2 6.7 8.2 9.7 2.3 3.8 5.3 6.8 8.3 9.8 2.4 3.9 5.4 6.9 8.4 9.9 [1] 0 0 -2 -2 > x^2 [1] 1 4 > x%*%y Error in x %*% y : non-conformable arguments > z<-c(3,4) > x%*%z [,1] [1,] 11 > z%*%x [,1] [1,] 11 > r<-c(2,3,2,3) > r/y [1] 2.0000000 1.5000000 0.6666667 0.7500000 También se pueden crear vectores de caracteres, the valores logicos (TRUE, FALSE) y de factores. > cadena<-c("Esto", "es", "UNA CADENA", "de", "caracteres") > length(cadena) [1] 5 > cadena [1] "Esto" "es" "UNA CADENA" "de" "caracteres" > cadena =="de" [1] FALSE FALSE FALSE TRUE FALSE > mifactor <-factor(c(25,30, 70)) > mifactor [1] 25 30 70 Levels: 25 30 70 Para obtener el elemento de un vector se usan los paréntesis [] > x[3] [1] NA > y[2] [1] 2 > cadena[1] [1] "Esto" > cadena[1:3] [1] "Esto" "es" "UNA CADENA" 3 > y[-2] [1] 1 3 4 > r[c(1,3)] [1] 2 2 > y[y<3] [1] 1 2 Vectores se pueden poner juntos para grear una estructura más complicada llamada data frame, que es una colección de filas y columnas de la misma dimensión. > > > > > 1 2 3 4 nombre<-c("Juan", "John", "Smirnov", "Mohamed") pais<-c("Bolivia", "Nueva Zelanda", "Rusia", "Malasia") edad<-c(14, 23, 98, 34) miframe<-data.frame(nombre, pais, edad) miframe nombre pais edad Juan Bolivia 14 John Nueva Zelanda 23 Smirnov Rusia 98 Mohamed Malasia 34 Las variables o columnas de una data frame no se pueden acceder como en una matriz. Se tiene que usar el nombre de la data frame$nombre de la columna[]. Otra manera es usar attach(dataframe). > rm(nombre, pais, edad) > edad Error: object "edad" not found > miframe$edad [1] 14 23 98 34 > miframe$edad[2] [1] 23 > attach(miframe) > edad [1] 14 23 98 34 > detach(miframe) > edad Error: object "edad" not found Para el manejo de ficheros se pueden usar los siguientes comandos: 4 • Abrir un fichero está delimitado por comas: read.csv(”nombrefichero”, header=(TRUE O FALSE))-¿miframe. El resultado es un dataframe • Abrir fichero está delimitado por tabuladores: read.table(”nombrefichero”, header=(TRUE O FALSE))-¿miframe. El resultado es un dataframe. • Salvar un dataframe en un fichero delimatado por comas: write.csv(datos, ”nombrefichero”, quote=FALSE, col.names=FALSE, row.names=FALSE) • Salvar un dataframe fichero delimatado por tabuladores: write.table(datos, ”nombrefichero”, quote=FALSE, col.names=FALSE, row.names=FALSE) • Salvar una figura en postscript: postscript(”nombrefichero.ps”) hacer todos los comandos del plot y acabar con: dev.off() Otros comandos que pueden ser de ayuda • help(). Se accede a la ayuda de R. • help.search(). Se puede buscar una keyword determinada y ver si R tiene algo en su base de datos. • mean(). Devuelve la media muestral de un vector. • var(). Devuelve la quasi-varianza muestral. • min(), max(). Devuelve el valor mı́nimo y máximo de un vector • plot(). Produce una figura. Tiene varios argumentos que son interesantes para cambiar la apariencia de la figura. 5