Comentario
Soy un comentario
Salida
• print(“Hello World”) • cat(“Hello”, “World”)
Información sobre comandos de R
# Información sobre un comando específico p.ej. ‘which’ • apropos(“which”) • help(which) • ?which • RSiteSearch(“which”)
Historial de comandos y salida
# Mostrar comandos anteriores history()
# Salir de RStudio q()
Directorio de trabajo
# Mostrar mi directorio de trabajo en R getwd()
# Cambiar el directorio de trabajo
# Indicar un nuevo directorio de trabajo
setwd(‘PFAD’)
Guardar comandos/script de R
Guardar localmente comandos de R o R-Scribt save (myTable, file=“C:/Users/axxKreis/Desktop/myTable.RData”)
Cargar comandos/script de R
# Cargar resultados persistidos load (file=“C:/Users/axxKreis/Desktop/myTable.RData”)
Cargar archivo CSV
# Cargar una tabla (archivo CSV) myCsvTable <- read.table(file=“C:/[PFAD]/myCsvTable.csv”, header=TRUE, sep=";") o myCsvTable <- read.csv(file=“C:/[PFAD]/myCsvTable.csv”, header=TRUE, sep=";")
Bibliotecas
Información sobre bibliotecas disponibles
# Indica dónde están instaladas las bibliotecas .libPaths()
# Mostrar los paquetes básicos instalados getOption(“defaultPackages”)
# Listar todos los paquetes actualmente cargados (.packages())
# Todos los paquetes instalados y disponibles (.packages(all.available=TRUE)) o library() # Para más detalles o installed.packages()
# Ruta de las bibliotecas instaladas Sys.getenv(“R_LIBS_USER”)
Cargar una biblioteca
# Cargar biblioteca existente p.ej. rpart library(rpart)
Instalar una biblioteca
install.packages(c(“tree”,“maptree”)) install.packages(“Nombre de la biblioteca”, dependencies=TRUE)
Lista pública de bibliotecas de R
https://cran.r-project.org/web/packages/available_packages_by_date.html
Actualizar paquetes instalados
update.packages()
Cargar bibliotecas al iniciar RStudio
# Con un editor de texto en modo administrador, editar: C:\Program Files\R\R-3.2.4\etc\Rprofile.site # Dentro del archivo, añadir las bibliotecas deseadas library(DBI) library(FSelector) library(ggplot2) library(lattice) library(RODBC) library(RMySQL) library(lattice)
Instalar y cargar bibliotecas de bases de datos
RODBC equivale a ODBC DBI equivale a JDBC RMySQL equivale a MySQL
# Instalar paquetes de base de datos install.packages(“RODBC”) install.packages(“DBI”) install.packages(“RMySQL”) # MySQL
# Cargar paquete instalado library(RODBC) # En caso de error muestra un mensaje. De lo contrario, no hay salida. library(DBI) library(RMySQL)
Biblioteca para procesamiento de datos
install.packages(“FSelector”)
Determinar la entropía para ’target value’
entropy (entropyTargetValue)
Ganancia de información
information.gain(data)
# Calcular la ganancia de información para el atributo ‘xxx’ respecto a ’target value’ information.gain (head(data[c(“TARGET.VALUE”,“xxx”)],length(data$TARGET.VALUE)))
Biblioteca para visualización
# Paquetes de visualización • lattice # Debe estar instalado y cargado • ggplot2
Tipos de datos
# Tipos de datos más usados
- Vectors
- Logical
- Numeric
- Integer
- Complex (1+2x)
- Character
- Raw (Hexadecimal)
- Lists
- Matrices
- Arrays
- Factors
Variables (símbolos)
Declaración
a <- 1 o a = 1
# Notación funcional ‘<-’(a,1)
Mostrar todas las variables
ls()
# Mostrar variables que coincidan con el patrón ls(pattern = “var”)
# Mostrar todas las variables, incluidas las ocultas ls (all.names = TRUE)
Eliminar variable(s) ‘a’
rm(a)
# Eliminar todas las variables rm(list = ls())
Comparar variables
a = 1 b = 2 a==b # FALSE
Operadores
Operadores aritméticos
- + * / %% %/% ^
Operadores relacionales
> < == <= >= !=
Operadores lógicos
& | ! && ||
Operadores de asignación
<− (local) = «− (global) -> -»
Otros operadores
: %in% %*%
Ejemplos
# Módulo (%%)
a = c(4, 8, 12) b = c(12, 8, 4) a%%b
Resultado: 4 0 0
# Cuántas veces los valores de ‘a’ caben en ‘b’
a = c(4, 8, 12) b = c(12, 8, 4) a%/%b
Resultado: 0 1 3 # Elevar vectores: p.ej. 2*2*2=8; 3*3=9; 4*4=16 a = c(2, 3, 4) b = c(3, 2, 2) a^b
Resultado: 8 9 16
# Comprobar si valores de ‘a’ > ‘b’ a = c(4, 8, 12) b = c(12, 8, 4) a>b
Resultado: FALSE FALSE TRUE # Devuelve TRUE si ambos vectores tienen TRUE a = c(2, TRUE, 4) b = c(3, FALSE, 2) a&b
Resultado: TRUE FALSE TRUE
# Devuelve TRUE si al menos un elemento es TRUE a = c(3,0,TRUE,FALSE, 0) b = c(4,0,FALSE,FALSE, 0.1) a|b
Resultado: TRUE FALSE TRUE FALSE TRUE
# Comprobar si un valor está en el vector a = c(3,0,TRUE,FALSE, 0) 3%in%a
Resultado: TRUE String
Cadena
# Las comillas simples se convierten en dobles internamente ‘hello’ “Hello”
Longitud de cadena
nchar(a)
Subcadena
a=“abcdefg” substr(a,3,5)
Resultado: cde
Concatenación
a <- “Hello” b <- ‘How’ c <- “are you?”
paste(a,b,c) “Hello How are you?”
paste(a,b,c, sep = “@”) “Hello@How@are you?”
paste(a,b,c, sep = “”, collapse = “”) “HelloHoware you? "
Generar cadena de 5 caracteres
format(18, width = 5) [1] " 18”
Alineación de salida
format(“Hello”, width = 8, justify = “centre”) #left, right, centre, none " Hello "
Mayúsculas y minúsculas
x = “Hello” toupper(x) tolower(x)
Factor
v = c(“thomas”, “thomas”, “thomas”, “linda”)
levels(v) NULL
typeof(v) [1] “character”
class(v) [1] “character”
# Convertir a factor y comprobar
v = factor(v)
is.factor(v) TRUE
levels(v) “linda” “thomas”
typeof(v) “integer”
class(v) “factor”
# En un ‘data frame’, las cadenas se convierten en factores a <- c(“Thomas”, “Linda”, “Felix”, “Sam”) b <- c(34,19,18,56) myDataFrame <- data.frame(a,b) is.factor(a) is.factor(myDataFrame$a)
Resultado: FALSE TRUE
# Orden de niveles inicial a <- factor( c(“Thomas”, “Linda”, “Felix”, “Sam”, “Linda”)
Resultado: Levels: Felix Linda Sam Thomas
# Cambiar orden de niveles a <- factor( a, levels = c(“Linda”, “Sam”, “Thomas”, “Felix”) )
Resultado: Levels: Linda Sam Thomas Felix # Generar factor - 4 veces primer nivel, 4 veces segundo nivel a <- gl(2, 4, labels = c(“Linda”, “Sam”, “Thomas”, “Felix”))
Resultado: Linda Linda Linda Linda Sam Sam Sam Sam Levels: Linda Sam Thomas Felix
Vector
# Crear vector myVector <- c(1,2,c(3,4),5)
Resultado: 1 2 3 4 5 # Si incluye cadena, todo se convierte en cadena c(‘hello’,0,TRUE)
Resultado: “hello” “0” “TRUE”
# Índices days <- c(“mo”, “di”, “mi”, “do”, “fr”, “sa”, “so”) days[c(1,3)]
Resultado: “mo” “mi”
# Cada segundo valor days <- c(“mo”, “di”, “mi”, “do”, “fr”, “sa”, “so”) days[c(TRUE,FALSE)]
Resultado: “mo” “mi” “fr” “so”
# Eliminar índices days <- c(“mo”, “di”, “mi”, “do”, “fr”, “sa”, “so”) days[c(-2,-3)]
Resultado: “mo” “do” “fr” “sa” “so”
# Reordenar days <- c(“mo”, “di”, “mi”, “do”, “fr”, “sa”, “so”) days[c(1,7,6,5,4,3,2)]
Resultado: “mo” “so” “sa” “fr” “do” “mi” “di”
# Operar vectores +, -, *, /
# Longitudes desiguales: 1*1, 2*2, 3*3, 4*1, 5*2, 6*3 a = c(1, 2, 3) b = c(1, 2, 3, 4, 5, 6) a*b
Resultado: 1 4 9 4 10 18
# Ordenar a = c(1, 4, 9, 4, 10, 18) sort(a)
# Invertir orden sort(a, decreasing = TRUE)
# Longitud length (myVector)
# Ordenar sort(myVector)
# Duplicados duplicated (myVector)
# Vector 1:50
# Tercer elemento a[3]
# Elementos 1 a 3 a[1:3]
# Combinar para tabla first.name <- c(“Hannes”, “Julia”) last.name <- c(“Müller”, “Schmidt”) myTable <- data.frame(first.name, last.name)
o
x <- c(“a”, “b”) y <- c(“A”, “B”) paste(x,y) # Resultado: “a A” “b B” “a C”
o
rbin (x, y)
o
cbind (x,y)
Lista
# Crear lista ‘meineListe’ meineListe <- list(1, 2, c(3,4))
Resultado: [[1]] [1] 1
[[2]] [1] 2
[[3]] [1] 3 4
# Nombrar elementos names(meineListe) <- c(“Element1”, “Element2”) # Nombres para dos primeros elementos
Resultado: $Element1 [1] 1
$Element2 [1] 2
$
# Mostrar nombres names(meineListe)
# Acceder elementos meineListe[1] o meineListe$Element1
# Sobrescribir lista meineListe <- list(c(10, 20, 30), “Hello Liste”)
# Sobrescribir elemento meineListe[2] <- “Hello World!”
# Combinar listas a = list(1,2,3) b = list(4,5,6) meineNuevaLista = c(a,b)
# Lista a vector unlist(meineNuevaLista)
Resultado: [1] 1 2 3 4 5 6
Matriz
# Crear matriz (2D)
matrix( c(1,2,3,4,5,6), ncol = 3, nrow = 2, byrow = FALSE)
Resultado: [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6
o
matrix( c(1,2,3,4,5,6), ncol = 3, nrow = 2, byrow = TRUE) Resultado: [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6
# Matriz con nombres rownames = c(“row1”, “row2”, “row3”) colnames = c(“col1”, “col2”, “col3”, “col4”) myMatrix <- matrix(c(1:12), ncol = 4, nrow = 3, byrow = TRUE, dimnames = list(rownames, colnames))
Resultado: col1 col2 col3 col4 row1 1 2 3 4 row2 5 6 7 8 row3 9 10 11 12
# Leer primera fila myMatrix[1,]
Resultado: col1 col2 col3 col4 1 2 3 4
# Leer primera columna myMatrix[,1]
Resultado: row1 row2 row3 1 5 9
# Leer [1,3] myMatrix[1,3]
# Sumar matrices myMatrix1 … myMatrix2 … myMatrix1 + myMatrix2
Resultado: [,1] [,2] [,3] [1,] 2 4 6 [2,] 8 10 12
Array
# Array (nD) array(“a”, dim = c(3,4,2) )
Resultado: , , 1 … , , 2 …
# Array multidimensional a <- array(…) o …
Resultado: , , 1 … , , 2 …
# Leer [1,3,2] myArray[1,3,2]
Resultado: 7
# Leer dimensión 2 myArray[,,2]
# Sobrescribir dimensión 2 myArray[,,2] <- array(…)
# Aplicar función a lo largo de ejes apply(myArray, c(1), sum)
Resultado: row1 row2 row3 92 100 108
Data Frame
# Crear data.frame myDataFrame <- data.frame(…, stringsAsFactors = FALSE)
Resultado: name alter geschlecht 1 Thomas 34 M 2 Johan 21 M 3 Linda 49 W
# Estructura str(myDataFrame)
Resultado: ‘data.frame’: …
# Resumen summary(myDataFrame)
Resultado: …
# Leer columna data.frame(myDataFrame$name)
Resultado: myDataFrame.name …
# Dos primeras columnas myDataFrame[0:1,]
Resultado: name alter geschlecht 1 Thomas 34 M
# Columnas 1 y 3 myDataFrame[c(1,3)]
Resultado: name geschlecht …
# Añadir columna myDataFrame$SpaltenBezeichnung <- c(…)
Resultado: …
# Añadir filas newDataFrameRows <- data.frame(…) rbind(myDataFrame,newDataFrameRows)
Resultado: …
Tabla
# Editar GUI myTable <- edit (myTable) o fix (myTable)
# Dimensiones dim(tableName)
# Nombres de columnas colnames(tablName)
# Selección de columnas train[,c(‘age’,’name’)]
Condición (if/else)
# if/else x <- 1 if (1 > 2) “yes” else “no”
# Varias expresiones “hello”; 1+1; 1*3
Bucle
i = 5 repeat {if (i > 25) break else {print(i); i <- i + 5;}} o while (i <= 25) {print(i); i <- i + 5} o for (i in seq(from=0, to=100, by=5)) print(i)
o
seq(0, 100, by = 5)
Resultado: 0 5 10 … 100 Conexión a base de datos y consulta de Query
Funciones
# Diferentes sintaxis y parámetros log2(64) log(x=64,base=2) log(64,2)
# Crear función con argumentos x <- function(i) i^2 x(2) # Resultado: 4
# Función propia nameDerFunktion <- function(Übergabeparameter) { print(Übergabeparameter) }
# Llamar función nameDerFunktion(Übergabeparameter)
# Función con múltiples parámetros sayHelloWorld <- function(s,h) { cat(s, “”, h) } sayHelloWorld(s=“Hello”, h=“World”) o sayHelloWorld(“Hello”, “World”)
# Función con valores predeterminados sayHelloWorld <- function(s=“H”,h=“W”) { cat(s, “”, h) } sayHelloWorld() # Para valores predeterminados sayHelloWorld(“Hello”, “World”) # Para sobrescribir defaults
Funciones matemáticas
# Establecer decimales options(digits=17) # Redondear sqrt(99) round( sqrt(99) ) o round(x=sqrt(99), digits=2)
# Media x = c(1,2,3) mean(x) # 2
# Mediana x = c(1, 2, 4, 99) median(x) # 3
# Mín y máx min(x) max x) o range(x) # 1 99
# Diferencia diff( range(x) ) # Datos aleatorios sample(1:1000, 10, replace = FALSE, prob = NULL)
# 10 ceros a <- rep(0, 10)
# Formato format(20.0, nsmall = 10) # Rellenar decimales
Resultado: “20.0000000000”
# Reducción de decimales format(20.123456789, digits = 4)
Resultado: 20.12
# Notación científica format(20.0000000000, scientific = TRUE)
Resultado: 2e+01
# Formatear entrada format(100)
Resultado: “100”
