Kenneth Cabrera
Viernes 12 de septiembre de 2014
[ Siempre devuelve un objeto de la misma clase que el original.[[ Es usado para extraer los elementos de una lista.
Sólo para extraer un elmento de la lista. Lo que devuelve
puede ser de distitno tipo al de la lista o el data.frame.$ se usa para extraer elementos de una lista o data.frame.
Semánticamente es similar a [[.x <- c("a", "b", "c", "c", "d", "a")
x[1]
x[2]
x[1:4]
x <- c("a", "b", "c", "c", "d", "a")
x > "a"
x[x > "a"]
u <- x > "a"
x[u]
x <- data.frame(x = 1:5, y = letters[1:5], z = c(T,T,F,T,F))
x$x
x[["x"]]
x["x"]
x[["y"]]
x["y"]
x[["z"]]
x["z"]
x <- matrix(6:1, 2, 3)
x[1, 2]
x[2, 1]
x[1,]
x[,2]
x <- matrix(6:1, 2, 3)
x[1, 2]
x[1, 2, drop = FALSE]
x <- matrix(6:1, 2, 3)
x[1, ]
x[1, , drop = FALSE]
x <- list(foo = 6:1, bar = 0.6)
x[1]
x[[1]]
x$bar
x[["bar"]]
x["bar"]
x <- list(foo = 6:1, bar = 0.6, baz = "hello")
x[c(1,3)]
x <- list(foo = 6:1, bar = 0.6, baz = "hello")
nombre <- "foo"
x[[nombre]]
x$nombre
x$foo
x <- list(a = list(10, 12, 14), b = c(3.14, 2.81))
x[[c(1,3)]]
x[[1]][[3]]
x[[c(2,1)]]
x <- data.frame(x = 1:5, y = letters[1:5], z = c(T,T,F,T,F))
x[[c(3,3)]]
x[c(1,3)]
x[1,3]
x[3,]
x[c(1,3),]
x[,c(1,3)]
x <- list(unvector = 1:5)
x$u
x[["u"]]
x[["u", exact = FALSE]]
x <- c(1, 2, NA, 4, NA, 5)
malos <- is.na(x)
x[!malo]
x <- c(1, 2, NA, 4, NA, 5, 9, NA)
y <- c("a", "b", NA, "d", NA, "f", NA, "k")
buenos <- complete.cases(x,y)
buenos
x[buenos]
y[buenos]
airquality[1:6, ]
buenos <- complete.cases(airquality)
airquality[buenos, ][1:6, ]
c(TRUE, FALSE) & NA
c(TRUE, FALSE) | NA
Quitar únicamente los que en todo el registro sea NA
x <- c(1, 2, NA, 4, NA, 5, 9, NA)
y <- c("a", "b", NA, "d", NA, "f", NA, "k")
unido <- data.frame(x,y)
unido
x y
1 1 a
2 2 b
3 NA <NA>
4 4 d
5 NA <NA>
6 5 f
7 9 <NA>
8 NA k
Quitar únicamente los que en todo el registro sea NA
x <- c(1, 2, NA, 4, NA, 5, 9, NA)
y <- c("a", "b", NA, "d", NA, "f", NA, "k")
unido <- data.frame(x,y)
unido[!(is.na(x) & is.na(y)),]
x y
1 1 a
2 2 b
4 4 d
6 5 f
7 9 <NA>
8 NA k
Las principales funciones para la lectura de base de datos son:
read.table, read.csv, read.csv2, para leer datos tabulados.readLines, para leer lineas de un archivo de texto.source, para leer archivos con código en R. (inverso de dump)dget, para leer archivos con código en R. (inverso de dput)load, para leer archivos propios en formato .RData.Las funciones para escritura análogas son:
write.table, write.csv, write.csv2writeLinesdumpdputsaveLa forma más genérica de la lectura de datos es con la función 'read.table'. Algunos argumentos importantes son:
file, el nombre del archivo, o una conexión.header, argumento lógico para determinar si el archivo tiene encabezado.sep, sarta que indica el símbolo separador de columnas.colClasess, un vector de sartas que indica la clase en la cual sería
leída cada columna de la base de datos.nrows, número de fila a leer del archivo de la base de datos.comment.char, sarta que indica el símbolo para comentarios.skip, número de líneas para dejar de leer al principo de la base de datos.stringsAsFactors, lógico para determinar si las variables alfanuméricas se conviertan o no a factores.datos <- read.table("archivo.txt")
Por omisión:
#.args(read.table).Para leer base de datos grandes (>50MB y <2GB):
read.table.colClasses para leer más rápido la base de datos.
Si todas son numérica con sólo establecer el argumento como colClases = "numeric" se ahorra un buen tiempo.incial <- read.table("basededatos.txt", nrows = 100)
clases <- apply(inicial, class)
todo <- read.table("basededatos.txt", colClasses = clases)
Si se tiene una tabla de 1'500.000 filas y 120 columnas, y todas son numéricas entonces se tiene que un cálculo rápido es:
todo <- 1500000 * 120 * 8
todo
todo/2^20 # bytes/MB
(todo/2^20)/1000 # En GB