15 de junio de 2010

Algunos comandos de R útiles en ciencia e investigación

Inspirado en:

http://www.personality-project.net/r/r.commands.html

http://www.statmethods.net/graphs/scatterplot.html

http://www.ats.ucla.edu/stat/R/notes/


Básicos
  • Ver el directorio de trabajo:
getwd()
  • Cambiar el directorio de trabajo:
setwd("path")
  • Salir de R:
q()
  • Obtener ayuda de un comando (las comillas son importantes):
help("command")
?"command"
  • Ver los objetos y variables del espacio de trabajo:
ls()
  • Borrar un objeto del espacio de trabajo:
rm(x)
rm(list=ls()) Borrar todos los objetos
  • Guardar el espacio de trabajo:
save.image() # en el archivo .RData en el directorio de trabajo
save(object list,file="myfile.RData") # los objetos deseados en el archivo elegido
  • Cargar un espacio de trabajo:
load("myfile.RData")
  • Salir de R:
q()

Vectores y matrices
  • Crear un vector:
x=c(1,2,4,8,16)
y=c(1:10)
z=c(rnorm(n))
  • Operaciones con vectores:
x=c(x)+n # suma 'n' a cada elemento
z=c(x,y) # combina 2 vectores creando un vector lineal
z=cbind(x,y) # combina 2 vectores creando una matriz de 2 columnas
z=rbind(x,y) # combina 2 vectores creando una matriz de 2 filas
replace(x,x==0,NA) # sustituye los ceros por NA
  • Operaciones con matrices:
mat[4,2] # muestra la 4ª fila y la 2ª columna
mat[3,] # muestra la 3ª fila
mat[,2] # muestra la 2ª columna
mat[,-3] # borra la 3ª columna
mat[-2,] # borra la 2ª fila
mat[1:3,3:5] # muestra las filas 1 a 3 y las columnas 3 a 5

Frames
  • Crear un frame a partir de vectores (cada vector una columna del frame):
data.fr=data.frame(x1,x2,x3 …)
  • Crear un frame a partir de una matriz:
as.data.frame(mat)
  • Conocer si un objeto es un frame:
is.data.frame(mat)
  • Convertir un frame en matriz:
as.matrix(data.frame)
  • Leer un fichero de datos separados por tabuladores con los nombres de sus columnas (1ª línea) y guardarlo en un frame:
data.fr<-read.table("ruta fichero",header=T,sep="\t")
  • Obtener los nombres de las columnas de un frame:
names(data.fr)
  • Obtener los nombres de las filas de un frame:
row.names(data.fr)
  • Obtener el número de filas de un frame:
nrow(data.fr)
  • Ver las primeras filas del frame:
head(data.fr, n=10) # las 10 primeras líneas
  • Crear vectores con el nombre de cada columna del frame (y sus datos)
attach(data.fr)
detach(data.fr) # borrar los vectores
  • Añadir una fila a un frame:
data.fr <- rbind(data.fr,data.frame(colA=1,colB="abc",colC=rnorm(1)))
  • Añadir una columna a un frame:
data.fr$colC <- data.fr$colA + 5 * data.fr$colB
  • Filtrar un frame para obtener un subconjunto de datos y guardarlo en otro frame:
subset.frame<-subset(data.fr,colA>=5 & !is.na(colB) | ColC='V')
subset.frame<-subset(data.fr,complete.cases(data.fr)) # Obtener únicamente las filas con datos en todas sus columnas
  • Ordenar un frame:
data.fr[order(data.fr$colB),] # Ordena el frame con los valores de O la columna B
data.fr[rev(order(data.fr$colB)),] # Orden inverso

Estadística
  • Calcular varios parámetros estadísticos de un conjunto de datos:
max(x)
min(x)
mean(x)
median(x)
sum(x)
var(x) # produces the variance covariance matrix
sd(x) # standard deviation
mad(x) # median absolute deviation
fivenum(x) # Tukey fivenumbers min, lowerhinge, median, upper hinge, max
Table(x) # Matriz de frecuencias
scale(x,scale=T) # centers around the mean and scales by the sd
cumsum(x) # cumulative sum
cumprod(x)
cummax(x)
cummin(x)
rev(x) # reverse the order of values in x
  • Matriz de correlación:
cor(x,y,use="pair") #correlation matrix for pairwise complete data, use="complete" for complete cases
  • Test de correlación:
cor.test(x,y,method=c('pearson'))
  • ANOVA (Análisis de la varianza):
aov.1 <- aov(colA~colB,data.fr) # one way analysis of variance (colA contains values and colB contains classes)
aov.2 = aov(colA~colB*colC,data.fr) #do a two way analysis of variance
summary(aov.1) #show the summary table
print(model.tables(aov.1,"means"),digits=3) #report the means and the number of values/class
boxplot(colA~colB,data.fr) #graphical summary appears in graphics window
  • Regresión lineal:
fit<-lm(colB~colA,data.fr) #basic linear model where x and y can be matrices (see plot.lm for plotting options)
summary(fit)
plot(data.fr$colA,data.fr$colB)
abline(fit)
  • Student's t-Test:
t.test(x,g)
pairwise.t.test(x,g)
power.anova.test(groups = NULL, n = NULL, between.var = NULL,
within.var = NULL, sig.level = 0.05, power = NULL)
power.t.test(n = NULL, delta = NULL, sd = 1, sig.level = 0.05,
power = NULL, type = c("two.sample", "one.sample", "paired"),
alternative = c("two.sided", "one.sided"),strict = FALSE)

Gráficas
  • Lista de colores disponibles en R:
colors()
  • Parámetros gráficos:
help(par)
  • Gráfico sencillo:
plot(x,y,type="p") # types: “p”: points, “l”: line, …
plot(x,y,col="red",lwd=2,type="l")
  • Dibujar un punto:
points(2,5,pch=16,col="blue",cex=3) # Dibuja el punto (2,5) en azul y con un tamaño relativo de 3
  • Etiquetar un punto:
text(2,5,label="Punto",pos=4,offset=-0.5,font=3,cex=0.75)
  • Gráfico de puntos:
plot(data.fr$colA, data.fr$colB,
main="Column A vs. Column B", xlab="Column A", ylab="Column B",
cex.main=2, cex.lab=1.5, pch=1)
  • Superponer gráfica:
lines(1-spec, sens, type='b', col=39, pch=7, lty=2)
plot(data.fr$colA, data.fr$colB,
main="Column A vs. Column C",
cex.main=2, cex.lab=1.5, pch=1, add=TRUE)
  • Ejemplo de gráfica pequeña dentro de otra mayor:
year <- 1900:2000
dollars <- (year-1899)^2
plot.within.aplot <- function()
{
    par(pin=c(1.5,1.5)) ### set the plot region size in inches
    par(mai=c(2.8,1.2,1,2.6)) ### set the 4 margin sizes in inches
    par(ps=6) ### set the font size to 6 point
    plot(year,dollars,col="blue",type="l",xlab="",ylab="") ### no axis labels
    par(new=T) ### the next plot will plot over the previous one
    par(ps=12) ### set the font size to 12 point
    par(pin=c(4.14,3.57)) ### set the plot region size back to the default
    par(mai=c(.956,.769,.769,.394)) ### set the margins back to the default
    plot(year,dollars,col="green",type="l") ### plot
}
plot.within.aplot()

Salida de datos
  • Opciones de ventanas gráficas:
X11() # abrir ventana en Linux
windows() # abrir ventana en Windows
dev.list() # mostrar ventanas abiertas
dev.cur() # mostrar ventana actual de trabajo
dev.off() # cerrar ventana actual de trabajo
dev.set(3) # seleccionar la ventana 3 como ventana de trabajo
dev.off(3) # cerrar la ventana 3
graphics.off() # cerrar todas las ventanas
  • Abrir fichero PDF para salida de datos:
pdf(file=”outfile.pdf”)

No hay comentarios:

Publicar un comentario