Saltar al contenido principal

# 3.12: Resumen

$$\newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} }$$

$$\newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}}$$

$$\newcommand{\id}{\mathrm{id}}$$ $$\newcommand{\Span}{\mathrm{span}}$$

( \newcommand{\kernel}{\mathrm{null}\,}\) $$\newcommand{\range}{\mathrm{range}\,}$$

$$\newcommand{\RealPart}{\mathrm{Re}}$$ $$\newcommand{\ImaginaryPart}{\mathrm{Im}}$$

$$\newcommand{\Argument}{\mathrm{Arg}}$$ $$\newcommand{\norm}[1]{\| #1 \|}$$

$$\newcommand{\inner}[2]{\langle #1, #2 \rangle}$$

$$\newcommand{\Span}{\mathrm{span}}$$

$$\newcommand{\id}{\mathrm{id}}$$

$$\newcommand{\Span}{\mathrm{span}}$$

$$\newcommand{\kernel}{\mathrm{null}\,}$$

$$\newcommand{\range}{\mathrm{range}\,}$$

$$\newcommand{\RealPart}{\mathrm{Re}}$$

$$\newcommand{\ImaginaryPart}{\mathrm{Im}}$$

$$\newcommand{\Argument}{\mathrm{Arg}}$$

$$\newcommand{\norm}[1]{\| #1 \|}$$

$$\newcommand{\inner}[2]{\langle #1, #2 \rangle}$$

$$\newcommand{\Span}{\mathrm{span}}$$ $$\newcommand{\AA}{\unicode[.8,0]{x212B}}$$

$$\newcommand{\vectorA}[1]{\vec{#1}} % arrow$$

$$\newcommand{\vectorAt}[1]{\vec{\text{#1}}} % arrow$$

$$\newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} }$$

$$\newcommand{\vectorC}[1]{\textbf{#1}}$$

$$\newcommand{\vectorD}[1]{\overrightarrow{#1}}$$

$$\newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}}$$

$$\newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}}$$

$$\newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} }$$

$$\newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}}$$

$$\newcommand{\avec}{\mathbf a}$$ $$\newcommand{\bvec}{\mathbf b}$$ $$\newcommand{\cvec}{\mathbf c}$$ $$\newcommand{\dvec}{\mathbf d}$$ $$\newcommand{\dtil}{\widetilde{\mathbf d}}$$ $$\newcommand{\evec}{\mathbf e}$$ $$\newcommand{\fvec}{\mathbf f}$$ $$\newcommand{\nvec}{\mathbf n}$$ $$\newcommand{\pvec}{\mathbf p}$$ $$\newcommand{\qvec}{\mathbf q}$$ $$\newcommand{\svec}{\mathbf s}$$ $$\newcommand{\tvec}{\mathbf t}$$ $$\newcommand{\uvec}{\mathbf u}$$ $$\newcommand{\vvec}{\mathbf v}$$ $$\newcommand{\wvec}{\mathbf w}$$ $$\newcommand{\xvec}{\mathbf x}$$ $$\newcommand{\yvec}{\mathbf y}$$ $$\newcommand{\zvec}{\mathbf z}$$ $$\newcommand{\rvec}{\mathbf r}$$ $$\newcommand{\mvec}{\mathbf m}$$ $$\newcommand{\zerovec}{\mathbf 0}$$ $$\newcommand{\onevec}{\mathbf 1}$$ $$\newcommand{\real}{\mathbb R}$$ $$\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}$$ $$\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}$$ $$\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}$$ $$\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}$$ $$\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}$$ $$\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}$$ $$\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}$$ $$\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}$$ $$\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}$$ $$\newcommand{\laspan}[1]{\text{Span}\{#1\}}$$ $$\newcommand{\bcal}{\cal B}$$ $$\newcommand{\ccal}{\cal C}$$ $$\newcommand{\scal}{\cal S}$$ $$\newcommand{\wcal}{\cal W}$$ $$\newcommand{\ecal}{\cal E}$$ $$\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}$$ $$\newcommand{\gray}[1]{\color{gray}{#1}}$$ $$\newcommand{\lgray}[1]{\color{lightgray}{#1}}$$ $$\newcommand{\rank}{\operatorname{rank}}$$ $$\newcommand{\row}{\text{Row}}$$ $$\newcommand{\col}{\text{Col}}$$ $$\renewcommand{\row}{\text{Row}}$$ $$\newcommand{\nul}{\text{Nul}}$$ $$\newcommand{\var}{\text{Var}}$$ $$\newcommand{\corr}{\text{corr}}$$ $$\newcommand{\len}[1]{\left|#1\right|}$$ $$\newcommand{\bbar}{\overline{\bvec}}$$ $$\newcommand{\bhat}{\widehat{\bvec}}$$ $$\newcommand{\bperp}{\bvec^\perp}$$ $$\newcommand{\xhat}{\widehat{\xvec}}$$ $$\newcommand{\vhat}{\widehat{\vvec}}$$ $$\newcommand{\uhat}{\widehat{\uvec}}$$ $$\newcommand{\what}{\widehat{\wvec}}$$ $$\newcommand{\Sighat}{\widehat{\Sigma}}$$ $$\newcommand{\lt}{<}$$ $$\newcommand{\gt}{>}$$ $$\newcommand{\amp}{&}$$ $$\definecolor{fillinmathshade}{gray}{0.9}$$

Cada libro que intenta introducir ideas básicas de programación a los novatos tiene que cubrir aproximadamente los mismos temas, y más o menos en el mismo orden. El mío no es la excepción, por lo que en la gran tradición de hacerlo de la misma manera que todos los demás lo hicieron, este capítulo cubrió los siguientes temas:

• Empezando. Descargamos e instalamos R y RStudio
• Comandos básicos. Hablamos un poco sobre la lógica de cómo funciona R y en particular cómo escribir comandos en la consola R (Sección @ref (#firstcommand), y al hacerlo aprendimos a realizar cálculos básicos usando los operadores aritméticos +, -, *,/y ^.
• Introducción a las funciones. Vimos varias funciones diferentes, tres que se utilizan para realizar cálculos numéricos (sqrt (), abs (), round (), una que se aplica al texto (nchar (); Sección @ref (#simpletext), y una que funciona sobre cualquier variable (length (); Sección @ref ( #veclength). Al hacerlo, hablamos un poco sobre cómo funcionan los nombres de los argumentos y aprendimos sobre los valores predeterminados para los argumentos. (Sección @ref (#functionarguments)
• Introducción a las variables. Aprendimos la idea básica detrás de las variables, y cómo asignar valores a variables usando el operador de asignación <- (Sección @ref (#assign). También aprendimos a crear vectores usando la función combine c (). (Sección @ref (#vectors)
• Tipos de datos. Aprendió la distinción entre datos numéricos, de carácter y lógicos; incluyendo los conceptos básicos de cómo ingresar y usar cada uno de ellos. (Secciones @ref (#assign) a Secciones 3.9
• Operaciones lógicas. (#logicals) Aprendí a usar los operadores lógicos ==,! =, <, >, <=, =>,! , & y |. Y aprendió a usar la indexación lógica. (Sección 3.10)

Todavía no hemos llegado a nada que se parezca a un “conjunto de datos”, claro. A lo mejor el próximo Capítulo nos acercará un poco más...

Referencias

R Core Team. 2013. R: Un Lenguaje y Entorno para la Computación Estadística. Viena, Austria: Fundación R para la Computación Estadística.

1. Fuente: Luz lúgubre (1968).
2. Aunque R se actualiza con frecuencia, no suele hacer mucha diferencia para el tipo de trabajo que haremos en este libro. De hecho, durante la redacción del libro me actualicé varias veces, y no tuve que cambiar mucho excepto estas secciones que describen la descarga.
3. Si estás ejecutando una versión anterior del Mac OS, entonces debes seguir el enlace a la página “antigua” (http://cran.r-project.org/bin/macosx/old/). Debería poder encontrar el archivo instalador que necesita en la parte inferior de la página.
4. Consejo para usuarios avanzados de Mac. Puedes ejecutar R desde la terminal si quieres. El comando es apenas “R”. Se comporta como la versión normal de escritorio, excepto que la documentación de ayuda se comporta como una página “man” en lugar de abrirse en una nueva ventana.
5. Esto probablemente no sea una coincidencia: las personas que diseñan y distribuyen el lenguaje R central en sí están enfocadas en cosas técnicas. Y a veces casi parecen olvidar que al final hay un usuario humano real. Las personas que diseñan y distribuyen RStudio están enfocadas en la interfaz de usuario. Quieren que R sea lo más utilizable posible. Los dos sitios web reflejan esa diferencia.
6. En serio. Si estás en condiciones de hacerlo, abre R y empieza a escribir. El simple acto de escribirlo en lugar de “solo leer” marca una gran diferencia. Hace que los conceptos sean más concretos, y vincula las ideas abstractas (programación y estadística) con el contexto real en el que es necesario utilizarlas. La estadística es algo que haces, no solo algo de lo que lees en un libro de texto.
7. Si estás ejecutando R desde el terminal en lugar de desde RStudio, escape no funciona: usa CTRL-C en su lugar.
8. Para usuarios avanzados: sí, como probablemente habrás adivinado, R está imprimiendo el código fuente para la función.
9. Si estás leyendo esto con R abierto, un buen truco de aprendizaje es intentar escribir algunas variaciones diferentes sobre lo que he hecho aquí. Si experimentas con tus comandos, aprenderás rápidamente qué funciona y qué no
10. Para usuarios avanzados: si quieres una tabla que muestre el orden completo de precedencia del operador en R, escribe? Sintaxis. No lo he incluido en este libro ya que hay bastantes operadores diferentes, y no necesitamos tanto detalle. Además, en la práctica la mayoría de la gente parece entenderlo viendo ejemplos: hasta escribir este libro nunca miré la declaración formal de precedencia de operador para ningún idioma en el que haya codificado, y nunca me encontré con ninguna dificultad.
11. Si estás usando RStudio, y el panel “entorno” (anteriormente conocido como el panel “espacio de trabajo”) es visible cuando escribes el comando, entonces probablemente viste que algo estaba sucediendo allí. Eso es de esperar, y es bastante útil. Sin embargo, hay dos cosas a tener en cuenta aquí (1) Todavía no he explicado lo que hace ese panel, así que por ahora solo ignórelo, y (2) esta es una de las cosas útiles que hace RStudio, no una parte de R en sí.
12. Como discutiremos más adelante, al hacer esto estamos usando implícitamente la función print ()
13. En realidad, de acuerdo con la tradición R de proporcionarle mil millones de destornilladores diferentes (incluso cuando realmente está buscando un martillo) estas no son las únicas opciones. También está la función assign () y los operadores <<- y ->>. Sin embargo, no vamos a estar usando estos en absoluto en este libro.
14. Un recordatorio rápido: cuando se usan operadores como <- y -> que abarcan varios caracteres, no se pueden insertar espacios en el medio. Es decir, si escribe - > o < -, R interpretará su comando de manera incorrecta. Y voy a llorar.
15. En realidad, puedes anular cualquiera de estas reglas si quieres, y con bastante facilidad. Todo lo que tienes que hacer es agregar comillas o backticks alrededor de tu nombre de variable no estándar. Por ejemplo mis ventas <- 350 funcionarían bien, pero casi nunca es una buena idea hacer esto.
16. Para usuarios muy avanzados: hay una excepción a esto. Si estás nombrando una función, no uses. en el nombre a menos que tenga la intención de hacer uso del sistema de programación orientado a objetos S3 en R. Si no sabe qué es S3, ¡entonces definitivamente no quiere usarlo! Para la nomenclatura de funciones, ha habido una tendencia entre los usuarios de R a preferir MyFunctionName.
17. Una nota al margen para estudiantes con experiencia en programación. Técnicamente hablando, los operadores son funciones en R: el operador de adición + es en realidad una forma conveniente de llamar a la función de adición + ()
18. Una nota para los inclinados matemáticamente: R sí admite números complejos, pero a menos que especifique explícitamente que los desea asume que todos los cálculos deben ser reales valorados. Por defecto, la raíz cuadrada de un número negativo se trata como indefinida: sqrt (-9) producirá NaN (no un número) como su salida. Para obtener números complejos, escribiría sqrt (-9+0i) y R ahora devolvería 0+3i. No obstante, como no vamos a tener ninguna necesidad de números complejos en este libro, no volveré a referirme a ellos.
19. Las dos funciones discutidas anteriormente, sqrt () y abs (), ambas solo tienen un solo argumento, x. Entonces podría haber escrito algo como sqrt (x = 225) o abs (x = -13) antes. El hecho de que todas estas funciones usen x como nombre del argumento que corresponde a la variable “principal” con la que estás trabajando no es coincidencia. Esa es una convención bastante utilizada. Muy a menudo, los escritores de funciones R intentarán usar nombres convencionales como este para hacerte la vida más fácil. O al menos esa es la teoría. En la práctica no siempre funciona tan bien como esperarías.
20. Para usuarios avanzados: obviamente, esto no es solo una cosa de RStudio. Si estás ejecutando R en una ventana de terminal, el autocompletado de tabulación sigue funcionando, y lo hace exactamente de la manera que esperarías. No es tan bonito visualmente como la versión RStudio, por supuesto, y carece de algunas de las características más geniales que proporciona RStudio. No me molesto en documentarlo aquí: mi suposición es que si estás ejecutando R en el terminal entonces ya estás familiarizado con el uso de tab autocomplete.
21. Por cierto, eso siempre funciona: si has empezado a escribir un comando y quieres borrarlo y empezar de nuevo, pulsa escape.
22. Otro método es comenzar a escribir algún texto y luego golpear la tecla Control y la flecha hacia arriba juntas (en Windows o Linux) o la tecla Comando y la flecha hacia arriba juntas (en una Mac). Esto abrirá una ventana que muestra todos tus comandos recientes que comenzaron con el mismo texto que el que has escrito actualmente. Eso puede ser muy útil a veces.
23. Observe que aquí no especificé ningún nombre de argumento. La función c () es uno de esos casos en los que no usamos nombres. Simplemente escribimos todos los números, y R simplemente los volca todos en una sola variable.
24. Ofrezco mis intentos adolescentes de ser “cool” como evidencia de que algunas cosas simplemente no se pueden hacer.
25. Tenga en cuenta que este es un operador muy diferente al operador de asignación = del que hablé en la Sección 3.4. Un error tipográfico común que la gente hace al intentar escribir comandos lógicos en R (u otros lenguajes, ya que la distinción “= versus ==” es importante en la mayoría de los lenguajes de programación) es escribir accidentalmente = cuando realmente te refieres a ==. Sea especialmente cauteloso con esto — He estado programando en varios lenguajes desde que era adolescente, y sigo fastidiando esto mucho. Hm. Creo que veo por qué no fui genial cuando era adolescente. Y por qué todavía no soy genial.
26. Una nota para aquellos de ustedes que han tomado una clase de informática: sí, R tiene una función para exclusive-or, es decir, xor (). También vale la pena señalar el hecho de que R hace la distinción entre los operadores de elementos & y | y los operadores que miran solo al primer elemento del vector, a saber, && y ||. Para ver la distinción, compare el comportamiento de un comando como c (FALSE, TRUE) & c (TRUE, TRUE) con el comportamiento de algo como c (FALSE, TRUE) && c (VERDADERO, VERDADERO). Si esto no significa nada para ti, ignora esta nota al pie por completo. No es importante para el contenido de este libro.
27. ¡Advertencia! VERDADERO y FALSO son palabras clave reservadas en R, por lo que puedes confiar en que siempre significan lo que dicen que hacen. Desafortunadamente, las versiones de atajo T y F no tienen esta propiedad. Incluso es posible crear variables que configuran los significados inversos, escribiendo comandos como T <- FALSE y F <- TRUE. Esto es una locura, y algo que generalmente se piensa que es un defecto de diseño en R. De todos modos, lo largo y corto de ello es que es más seguro usar VERDADERO y FALSO.
28. Bueno, digo eso... pero en mi experiencia personal no fue hasta que empecé a aprender “expresiones regulares” que mi desprecio por las computadoras alcanzó su punto máximo.

This page titled 3.12: Resumen is shared under a CC BY-SA 4.0 license and was authored, remixed, and/or curated by Danielle Navarro via source content that was edited to the style and standards of the LibreTexts platform.