domingo, 24 de octubre de 2010

Lenguajes funcionales

Laboratorio de Lenguajes de programación

Más de R

Asignación de valores
La asignaciones de valores se hace por medio de "<-" y la función ls() sirve para ver los objetos en memoria:

> x<-1
> y<-5
> ls()
[1] "x" "y"
También podemos usar ls(pat = "x") para ver los objetos que contengan el carácter "x":
> ls(pat = "x")
[1] "x"
Para ver más detalles de los objetos podemos usar:
> ls.str()
x : num 1
y : num 5

Las cadenas de caracteres se delimitan con "":

> mi_cadena <- "esta es la cadena"
> mi_cadena
[1] "esta es la cadena"
> cat(mi_cadena)
esta es la cadena
La función cat() sirve para mostrar la cadena sin las ""

Leer datos de un archivo
Para esto voy a utilizar la función read.table() que es la manera más usual de leer datos, asigna por default a as columnas el nombre $V1, $V2, etc., y podemos acceder a ellas escribiendo nombredevariable$V1, la función read.table() tiene algunas características definidas:
read.table(file, header = FALSE, sep = "", quote = "\"’", dec = ".",
row.names, col.names, as.is = FALSE, na.strings = "NA",
colClasses = NA, nrows = -1,
skip = 0, check.names = TRUE, fill = !blank.lines.skip,
strip.white = FALSE, blank.lines.skip = TRUE,
comment.char = "#")
Voy a explicar algunas:

file:
Se refiere al nombre del archivo que vamos a leer.

header:
Sirve para definir si el nombre de la columna ya esta especificado en el archivo en la primera línea.

sep:
la separación de la columnas.

row.name :
Nombre de las filas por defecto 1,2,3....

col.name :
Nombre de las columnas por defecto (V1, V2..).

skip :
El número de lineas ignoradas antes de leerlas.

fill :
Si es true agrega espacios en blanco a las variables que falten en la línea.

strip.white :
Borra espacios blancos antes y después de la línea de caracteres.

blank.lines.skip :
Si es true ignora las líneas en blanco.

Para explicarlo mejor cree un ejemplo, primero que nada hice una pequeña "base de datos" la cual llame ejemplo1.txt, este archivo será el que leeré con la variable contenido:

> contenido <- read.table("ejemplo1.txt")
> contenido
V1 V2 V3
1 computadoras 7000 dell
2 teclados 100 dell
3 bocinas 150 toshiba
4 computadoras 4000 acer
Vemos que en el ejemplo anterior no modifiqué las características definidas de las tablas, ahora voy a mostrar uno en el que si lo haga, voy a darle nombre a las columnas cambiando el valor de header "falso" a "verdadero" ahora podemos ver que toma los nombres de las columnas de la primera línea.

> contenido <- read.table("ejemplo1.txt", header = TRUE)
> contenido
computadoras X7000 dell
1 teclados 100 dell
2 bocinas 150 toshiba
3 computadoras 4000 acer

También esta la función read.fwf("ejemplo2.txt", widths=c(1, 4, 3)) la cual da un valor especifico a las columnas, en donde estoy diciendo que quiero que la columna 1 tenga 1 carácter, la columna 2 tenga 4 caracteres y la columna 3 contenga 3 caracteres, el archivo que voy a leer llamé ejemplo2 y contiene lo siguiente:

unodostrescuatro
cincoseissieteoc
nuevediezoncedoc
trececatorcequin

y la lectura del archivo se ve como sigue:

> contenido <- read.fwf("ejemplo2.txt", widths=c(1, 4, 3))
> contenido
V1 V2 V3
1 u nodo str
2 c inco sei
3 n ueve die
4 t rece cat
Guardar datos en un archivo
También podemos guardar el contenido de algún objeto en algún archivo con la función write(objeto, file), en el ejemplo siguiente mi objeto se sigue llamando "contenido" y todo lo voy a guardar en mi archivo ejemplo3.txt:

> contenido <- "estoy guardando datos desde R"
> write(contenido, file="ejemplo3.txt")
Y el archivo que genera:


Escribir los valores
Podemos escribir los valores de un objeto con la función c(valor1, valor2, valor3), o también la función scan() ejemplos:

> x<-c(1, 2, 5, 10)
> x
[1] 1 2 5 10
> y<-scan()
1: 41
2: 52
3: 32
4: Read 3 items
> y
[1] 41 52 32
Operaciones
Podemos obtener la suma, el producto, el valor máximo, mínimo, promedio y la mediana utilizando funciones como sum(x), prod(x), max(), min(), mean(), median(), también sort() para ordenar elementos de mayor a menor o para hacer lo contrario rev(sort()), entre muchas otras funciones.

> x
[1] 1 2 5 10
> sum(x)
[1] 18
> max(x)
[1] 10
> median(x)
[1] 3.5
> mean(x)
[1] 4.5
> prod(x)
[1] 100
> rev(sort(x))
[1] 10 5 2 1

Graficando
Ahora podemos graficar un conjunto de datos, combinandolo con lo explicado anteriormente "leer archivos":

> contenido<-read.table("ejemplo4.txt", header = TRUE)
> plot(contenido$nombre, contenido$calif)
Resultado:


Cualquier sugerencia pueden hacerla con confianza, tratare de responder lo más pronto posible.

2 comentarios: