Existen diversas combinaciones entre Interfaces a R, IDEs (Interactive Development Environment) y Sistema Operativo, incluso también existe la posibilidad de usar una IDE que está sirviéndose en una máquina distinta a la que se está utilizando (RStudio brinda esa posibilidad).
Cuanquiera sea el caso siempre tendremos acceso a una consola de R, y dentro de ella no importa qué combinación estemos utilizando (aunque existen pequeñas consideraciones respecto al sistema de codificación de caracteres, y caracteres que indican jerarquía de directorios), los comandos son los mismos.
Inicia el 'RGui.exe'
Entiendo que también tiene como IDE por defecto al RGui, por lo que es similar a Windows.
Existe una diversidad de interfaces e IDEs pero ninguna viene por defecto. Rcmdr, vendría a ser el RGui del Windows y RKWard es notablemente más avanzada y versátil, etc
abre un terminal e ingresa:
usuario_X$R
Es un IDE multiplataforma muy versátil que tiene herramientas para la generación de reportes automáticos (Sweave y knitr) como interactivos (Shiny) muy bien integrados, también tiene una integración muy buena con sistemas de control de versiones como GitHub y svn. Después de practicar algunos comandos fundamentales en la consola, veremos las utilidades que nos brinda esta IDE.
Es la pantalla (o ventana) que responde interactivamente el ingreso de comandos y se identifica fácilmente porque al ingreso presenta el siguiente mensaje:
R version 3.0.2 (2013-09-25) -- "Frisbee Sailing"
Copyright (C) 2013 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
R es un software libre y viene sin GARANTIA ALGUNA.
Usted puede redistribuirlo bajo ciertas circunstancias.
Escriba 'license()' o 'licence()' para detalles de distribucion.
R es un proyecto colaborativo con muchos contribuyentes.
Escriba 'contributors()' para obtener más información y
'citation()' para saber cómo citar R o paquetes de R en publicaciones.
Escriba 'demo()' para demostraciones, 'help()' para el sistema on-line de ayuda,
o 'help.start()' para abrir el sistema de ayuda HTML con su navegador.
Escriba 'q()' para salir de R.
[Previously saved workspace restored]
>
Note que:
>
al final del mensaje de bienvenida, tiene la función de lo que se conoce como prompt
, que es la señal de que el sistema está listo para recibir comandos, y no se debe confundir con ->
ó <-
que tienen otro rol.#
a cualquier comando, este se desactiva sin generar errores, ése carácter se llama comment character. Su utilización es muy frecuente en los scripts, no sólo para desactivar líneas temporariamente sin tener que borrarlas y volver a escribirlas, sino que -más recomendable aún- es para comentar lo que se va programando línea a línea.En consola:
q()
Cada IDE tiene opciones de menús para hacerlo.
Controlar el directorio de trabajo es importante porque facilita la gestión de archivos que se necesiten importar y/o exportar en los diversos modos de ejecución de R.
# El comando getwd() devuelve el camino al directorio de trabajo activo.
getwd()
## [1] "/home/sergio/TallerR2016"
# Usando setwd('/home/sergio/TallerR2016/') establezco el directorio de trabajo deseado
# Es muy útil explicitar este comando en los inicios de un script que requiera de lectura de archivos
setwd('/home/sergio/TallerR2016/')
Note que el carácter que identifica cambio de directorio que se está usando '/', eso se debe a que así lo hace Linux, si está corriendo otro Sistema Operativo, debiera fijarse en cómo se codifican las rutas a los archivos. En el caso que esté usando algo que pretende ser un Sistema Operativo (como Windows), ese carácter es '\' y una ruta tipica puede verse como 'c:\Archivos\de\Usuario\pepe\practicas_R\', mediante el uso del comando normalizePath
en scripts se soluciona las inconsistencias provocadas por esta ambigüedad.
Las ayudas en R, son indispensables y un gran ejemplo de cómo se trabaja en un ambiente colaborativo. Como todo sistema de código abierto, R tiene un sistema de ayuda muy versátil y bien estructurado. Aprender a utilizar y comprender los manuales de R, son la clave misma de la facilidad con la cual pueda adaptar esta herramientas a sus necesidades.
1. La principal fuente de información externa a su sistema son los manuales en línea: https://cran.r-project.org/manuals.html (si no tienen la documentación en su disco recurra a este enlace)
2. En su propio sistema, a través de los comandos asociados:
+ help.start() # Abre una pestaña en su navegador por defecto, con la página de ayuda general
+ help(comando) # responde en la consola con la ayuda del comando 'comando'
+ help.search('palabra clave')
+ example(comando)
+ demo() # lista los demos disponibles(es frecuente que tengan el mismo nombre al de la librería que pertenecen)
+ demo(nombre)
#Pidiendo información de cómo citar al R, siguiendo lo expresado en el mensaje de bienvenida.
citation()
##
## To cite R in publications use:
##
## R Core Team (2013). R: A language and environment for
## statistical computing. R Foundation for Statistical Computing,
## Vienna, Austria. URL http://www.R-project.org/.
##
## A BibTeX entry for LaTeX users is
##
## @Manual{,
## title = {R: A Language and Environment for Statistical Computing},
## author = {{R Core Team}},
## organization = {R Foundation for Statistical Computing},
## address = {Vienna, Austria},
## year = {2013},
## url = {http://www.R-project.org/},
## }
##
## We have invested a lot of time and effort in creating R, please
## cite it when using it for data analysis. See also
## 'citation("pkgname")' for citing R packages.
# Solicitando ayuda de el comando `setwd`
help(setwd)
# Solicitando ejemplos de uso del mismo comando
example(setwd)
##
## setwd> (WD <- getwd())
## [1] "/home/sergio/TallerR2016"
##
## setwd> if (!is.null(WD)) setwd(WD)
##Primeros tips para calmar la ansiedad …
Debe querer empezar a interactuar con sus propios datos…, sus propios archivos, etc. Sin embargo, primero veamos algunos ejemplos que tenemos más a mano para que nos ayude a ejemplificar el proceso.
NOTA: Existen muchos conjuntos de datos preparados que se utilizan en los ejemplos. Comenzaremos utilizando el conjunto de datos 'iris' y le preguntaremos en qué consisten.
data(iris) # carga el conjunto de datos provisto por defecto
help(iris) # abrirá una pestaña de su navegador por defecto con metadatos del set
head(iris) # muestra los primeros registros de una estructura de datos .
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
Como ve, la información está organizada una secuencia de filas que representan casos, y las columnas representando variables de respuestas y/o clasificatorias.
iris
es un objeto de clase data.frame, lo vemos en el resultado del comando str(iris)
o class(iris)
class(iris)
## [1] "data.frame"
str(iris)
## 'data.frame': 150 obs. of 5 variables:
## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
summary(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
## 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
## Median :5.800 Median :3.000 Median :4.350 Median :1.300
## Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
## 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
## Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
## Species
## setosa :50
## versicolor:50
## virginica :50
##
##
##
plot(iris)
A los fines de obtener un ejemplo desde el cual leer datos desde una archivo de texto, aprovecharemos el comando para exportar objetos de la clase data.frame a ese formato. EN lugar de escribir línea a línea
write.csv(iris,file="datosiris.csv") # escribiendo a un archivo el objeto "iris", con todas las opciones por defecto de la variante *write.csv*.
Como write.csv es una variante simplificada de write.table, se genera un segundo archivo para mostrar el uso de todas los argumentos, de modo tal que se pueda mostrar la versatilidad del par write.table/read.table para adaptarse a distintos formatos requeridos y/u ofrecidos
La lectura y escritura de información a archivos específicos, suele denominarse como serialización.
write.table(
iris, file = "datosiris.txt",
append = FALSE, # de ser verdadero, intentará adjuntar la salida al final de un archivo de texto existente definido en file
quote = TRUE, #rodea con " los valores pertenecientes a columnas de texto ó marcadas como factor
sep = ";", # las columnas se separarán con ";"
eol = "\n", # Carácter especial de fin de línea \n\r: Windows \r: mac 2004; \n POSix
na = "nd", # identificador de dato faltante
dec = ",", # decimal codificado por ','
row.names = FALSE, # agrega fila donde nombra los casos
col.names = TRUE, # agrega columna donde nombra los campos
fileEncoding = "UTF-8"
)
Si sus datos están en un archivo de texto plano, como del tipo *.csv (Comma Separated Value), reemplace el nombre de archivo en el argumento file
a continuación.
dat<-read.csv(file="datosiris.csv")
summary(dat)
## X Sepal.Length Sepal.Width Petal.Length
## Min. : 1.00 Min. :4.300 Min. :2.000 Min. :1.000
## 1st Qu.: 38.25 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600
## Median : 75.50 Median :5.800 Median :3.000 Median :4.350
## Mean : 75.50 Mean :5.843 Mean :3.057 Mean :3.758
## 3rd Qu.:112.75 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100
## Max. :150.00 Max. :7.900 Max. :4.400 Max. :6.900
## Petal.Width Species
## Min. :0.100 setosa :50
## 1st Qu.:0.300 versicolor:50
## Median :1.300 virginica :50
## Mean :1.199
## 3rd Qu.:1.800
## Max. :2.500
class(dat)
## [1] "data.frame"
str(dat)
## 'data.frame': 150 obs. of 6 variables:
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
Revise la ayuda para averiguar la fuente de los posibles errores de procesamiento read.table“
dat2<-read.table(
file = "datosiris.txt",
quote =" \"", #rodea con " los valores pertenecientes a columnas de texto ó marcadas como factor
sep = ";", # las columnas se separarán con ";"
na = "nd", # identificador de dato faltante
dec = ",", # decimal codificado por ','
#row.names = FALSE, # agrega fila donde nombra los casos
#col.names = FALSE, # agrega columna donde nombra los campos
header= TRUE, # pone a la primer fila leída como nombre de las variables
fileEncoding = "UTF-8"
)
str(dat2)
## 'data.frame': 150 obs. of 5 variables:
## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
Respecto a dat
y dat2
:
Ahora se anima a leer sus propios datos?
source('1_ScriptIris.R')
## Loading required package: tcltk
## 'data.frame': 150 obs. of 6 variables:
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...