Saltar al contenido principal
LibreTexts Español

9.2: ¡Mi guión R no funciona!

  • Page ID
    150131
  • \( \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}}\)

    ¿Y si tu guión no funciona?

    Lo más probable es que haya algún mensaje (que probablemente no entiendas) pero que no genere nada o algo inapropiado. ¡Tendrás que depurar tu script!

    • Primero es encontrar dónde falla exactamente tu guión. Si ejecuta el comando source () con la opción echo=true, esto es posible con solo buscar en la salida. Si esto aún no está claro, ejecute el guión pieza por pieza: ábralo en cualquier editor de texto simple y copie y pegue piezas del guión desde el principio hasta el final en la ventana R.
    • Lo anterior se relaciona con uno de los principios más importantes de depuración: minimizar su código tanto como sea posible, y encontrar el ejemplo mínimo que aún no funciona. Es probable que veas el error después de la minimización. Si no, ese ejemplo mínimo será apropiado para publicar en algún lugar con una pregunta.
    • Relacionado con lo anterior es que si quieres preguntarle a alguien más sobre tu problema R, haz no solo mínimo, sino mínimo ejemplo autónomo. Si su script carga algunos datos, adjúntelos a su pregunta, o use algunos datos R incrustados (como árboles o iris), o genere datos con sample (), runif (), seq (), rep (), rnorm () u otro comando. Incluso los expertos en R no pueden responder preguntas sin datos.
    • Volver al guión. En R, muchas expresiones son “muñecas rusas” así que para entender cómo funcionan (o por qué no funcionan), necesitarás llevarlas a pedazos, “desvestirte”, quitar paréntesis del exterior e ir más profundo hasta el núcleo de la expresión como:

    Código\(\PageIndex{1}\) (R):

    plot(log(trees$Volume), 1:nrow(trees))
    log(trees$Volume)
    trees$Volume
    trees
    1:nrow(trees)
    nrow(trees)

    Esta investigación podría intercalarse con llamadas ocasionales a la ayuda como? log o? nrow.

    • Para hacer guiones más pequeños, no elimines las piezas para siempre. Use comentarios en su lugar, tanto de una línea como de varias líneas. El último no está definido en R directamente pero se puede usar:

    Código\(\PageIndex{2}\) (R):

    if(0) {## print here anything _syntactically correct_}
    • Si su problema es probable dentro de la función grande, especialmente dentro del ciclo, use alguna manera de “mirar dentro”. Por ejemplo, con print ():

    Código\(\PageIndex{3}\) (R):

    abc <- function(x) { for (i in 1:10) x <- x+1; x }
    abc(5)
    abc <- function(x) { for (i in 1:10) { x <- x+1; print(x)}}
    abc(5)

    Por supuesto, R tiene funciones mucho más avanzadas para la depuración pero con frecuencia la minimización y el análisis de print ()'s (esto se llama rastreo) son suficientes para resolver el problema.

    • Los problemas más comunes son los paréntesis o corchetes no coincidentes, y las comas faltantes. El uso de un editor de texto con resaltado de sintaxis puede eliminar muchos de estos problemas. Una de las precauciones útiles es contar siempre entre corchetes abiertos y cercanos. Estos recuentos deben ser iguales.
    • Los scripts o conjuntos de comandos descargados de Internet podrían sufrir de herramientas automáticas que, por ejemplo, convierten cotizaciones en símbolos similares a citas (pero no legibles en R). La única solución es reemplazarlos cuidadosamente con las cotizaciones R correctas. Por cierto, esta es otra razón por la que no usar editores de documentos de oficina para R.
    • A veces, tu script no funciona porque tus datos cambiaron y ahora entran en conflicto con tu script.

      Esto no debería suceder si su script se hizo usando “modo paranoico”, comandos que generalmente son seguros para todo tipo de datos, como mat.or.vec () que hace vector si solo se especifica una columna, y matriz de lo contrario.

      Otra costumbre “paranoica” útil es hacer comprobaciones como si (es.matrix) {...} en todas partes. Estas precauciones permiten evitar situaciones en las que actualizaste los datos empiezan a ser de otro tipo, por ejemplo, tuviste en la pasada una columna, y ahora tienes dos.

      Por supuesto, algo siempre debe dejarse al azar, pero esto significa que debes estar listo para conflictos de este tipo.

    • En ocasiones, el guión no funciona porque hubo cambios en R.

      Por ejemplo, al inicio de su historia, R utilizó el guión bajo (_) para la asignación izquierda, junto con <-. La historia es cuando el lenguaje S estaba en desarrollo, en algunos teclados se ubicaba el guión bajo donde en otros teclados había flecha izquierda (como un símbolo). Estos dos operadores de asignación fueron heredados en R. Posteriormente, el equipo R decidió deshacerse del guión bajo como asignación. Por lo tanto, es posible que los scripts antiguos no funcionen en R más nuevos.

      Otro ejemplo más reciente fue cambiar el método de clustering ="ward” a method="ward.d”. Esto se debió a que la implementación inicial del método de Ward funcionó bien pero no reflejó la descripción original. En consecuencia, en versiones anteriores de R, los scripts más nuevos podrían dejar de funcionar.

      Afortunadamente, en R casos como primero (compatibilidad con versiones anteriores rotas) o segundos (compatibilidad con avance roto) son raros. Sin embargo, son más frecuentes en paquetes R.

    • Si descargó el script y no entiende lo que está haciendo, use minimización y otros principios explicados anteriormente. Pero aún más importante es jugar con un guión, cambiar opciones, cambiar el orden de los comandos, alimentarlo con diferentes datos, y así sucesivamente. Recuerden que (casi) todo lo que hace un humano podría ser descifrado por otro.

    This page titled 9.2: ¡Mi guión R no funciona! is shared under a Public Domain license and was authored, remixed, and/or curated by Alexey Shipunov via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.