Saltar al contenido

Error: símbolo / entrada inesperada /string constante / constante numérica / ESPECIAL en mi código

Al fin luego de tanto luchar ya hallamos la solución de este atolladero que muchos de nuestros usuarios de este sitio han tenido. Si tienes algún detalle que aportar no dudes en dejar tu información.

Solución:

Estos errores significan que el código R que está intentando ejecutar o la fuente no es sintácticamente correcto. Es decir, tiene un error tipográfico.

Para solucionar el problema, lea atentamente el mensaje de error. El código proporcionado en el mensaje de error muestra dónde cree R que está el problema. Busque esa línea en su código original y busque el error tipográfico.


Medidas profilácticas para evitar que vuelva a tener el error

La mejor forma de evitar errores sintácticos es escribir código elegante. De esa manera, cuando escriba mal las cosas, el problema será más fácil de detectar. Hay muchas guías de estilo R vinculadas desde la página de información de etiquetas SO R. También puede utilizar el formatR package para formatear automáticamente su código en algo más legible. En RStudio, el atajo de teclado CONTROL + CAMBIO + A reformateará su código.

Considere usar un IDE o editor de texto que resalte los paréntesis y llaves coincidentes, y muestre cadenas y números en diferentes colores.


Errores sintácticos comunes que generan estos errores

Paréntesis, llaves o corchetes que no coinciden

Si ha anidado paréntesis, llaves o corchetes, es muy fácil cerrarlos demasiadas o muy pocas veces.

}
## Error: unexpected '}' in "}"
 # OK

Desaparecido*al hacer la multiplicación

Este es un error común de los matemáticos.

5x
Error: unexpected symbol in "5x"
5*x # OK

No se ajusta si, para o devuelve valores entre paréntesis

Este es un error común de los usuarios de MATLAB. En R, if, for, return, etc., son funciones, por lo que debe ajustar su contenido entre paréntesis.

if x > 0 
## Error: unexpected symbol in "if x"
if(x > 0)  # OK

No usar varias líneas para el código

Intentar escribir varias expresiones en una sola línea, sin separarlas con punto y coma, hace que R falle, además de hacer que su código sea más difícil de leer.

x + 2 y * 3
## Error: unexpected symbol in "x + 2 y"
x + 2; y * 3 # OK

else comenzando en una nueva línea

En un ifelse declaración, la palabra clave else debe aparecer en la misma línea que el final de la if cuadra.

if(TRUE) 1
else 2
## Error: unexpected 'else' in "else"    
if(TRUE) 1 else 2 # OK
if(TRUE) 

  1
 else            # also OK

  2


= en lugar de ==

= se utiliza para asignar y dar valores a los argumentos de la función. == prueba dos valores para la igualdad.

if(x = 0) 
## Error: unexpected '=' in "if(x ="    
if(x == 0)  # OK

Faltan comas entre argumentos

Al llamar a una función, cada argumento debe estar separado por una coma.

c(1 2)
## Error: unexpected numeric constant in "c(1 2"
c(1, 2) # OK

Sin citar rutas de archivo

Las rutas de archivo son solo cadenas. Deben estar entre comillas simples o dobles.

path.expand(~)
## Error: unexpected ')' in "path.expand(~)"
path.expand("~") # OK

Cotizaciones dentro de cadenas

Este es un problema común al intentar pasar valores cotizados al shell a través de system, o creando cotizado xPath o sql consultas.

Comillas dobles dentro de una cita doble string necesita ser escapado. Del mismo modo, las comillas simples dentro de una sola cita string necesita ser escapado. Alternativamente, puede usar comillas simples dentro de una comilla doble string sin escapar, y viceversa.

"x"y"
## Error: unexpected symbol in ""x"y"   
"x"y" # OK
'x"y'  # OK  

Usar comillas rizadas

Las denominadas comillas “inteligentes” no son tan inteligentes para la programación en R.

path.expand(“~”)
## Error: unexpected input in "path.expand(“"    
path.expand("~") # OK

Usar nombres de variables no estándar sin comillas inversas

?make.names describe lo que constituye un nombre de variable válido. Si crea un nombre de variable no válido (usando assign, quizás), entonces debes acceder a él con comillas inversas,

assign("x y", 0)
x y
## Error: unexpected symbol in "x y"
`x y` # OK

Esto también se aplica a los nombres de columna en marcos de datos creados con check.names = FALSE.

dfr <- data.frame("x y" = 1:5, check.names = FALSE)
dfr$x y
## Error: unexpected symbol in "dfr$x y"
dfr[,"x y"] # OK
dfr$`x y`   # also OK

También se aplica al pasar operadores y otros valores especiales a funciones. Por ejemplo, buscar ayuda en %in%.

?%in%
## Error: unexpected SPECIAL in "?%in%"
?`%in%` # OK

Aprovisionamiento de código no R

los source La función ejecuta el código R desde un archivo. Se romperá si intenta usarlo para leer sus datos. Probablemente quieras read.table.

source(textConnection("x y"))
## Error in source(textConnection("x y")) : 
##   textConnection("x y"):1:3: unexpected symbol
## 1: x y
##       ^

Archivo de escritorio RStudio dañado

Los usuarios de RStudio han informado errores de fuente erróneos debido a un .rstudio-desktop expediente. Estos informes solo ocurrieron alrededor de marzo de 2014, por lo que posiblemente sea un problema con una versión específica del IDE. RStudio se puede restablecer siguiendo las instrucciones de la página de soporte.


Usar expresión sin pegar en anotaciones de gráficos matemáticos

Al intentar crear etiquetas o títulos matemáticos en gráficos, la expresión creada debe ser una expresión matemática sintácticamente válida como se describe en la ?plotmath página. De lo contrario, el contenido debe incluirse dentro de una llamada a pegar.

plot(rnorm(10), ylab = expression(alpha ^ *)))
## Error: unexpected '*' in "plot(rnorm(10), ylab = expression(alpha ^ *"
plot(rnorm(10), ylab = expression(paste(alpha ^ phantom(0), "*"))) # OK

Para mi el error fue:

Error: unexpected input in ""

y la solución fue abrir el script en un editor hexadecimal y eliminar los primeros 3 caracteres del archivo. El archivo comenzaba con una lista de materiales UTF-8 y parece que Rscript no puede leer eso.

EDITAR: OP solicitó un ejemplo. Aquí va.

➜  ~ cat a.R
cat('hello worldn')
➜  ~ xxd a.R
00000000: efbb bf63 6174 2827 6865 6c6c 6f20 776f  ...cat('hello wo
00000010: 726c 645c 6e27 290a                      rldn').
➜  ~ R -f a.R        

R version 3.4.4 (2018-03-15) -- "Someone to Lean On"
Copyright (C) 2018 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

  Natural language support but running in an English locale

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> cat('hello worldn')
Error: unexpected input in ""
Execution halted

Reseñas y puntuaciones

Si te mola la invitación, tienes el poder dejar una reseña acerca de qué le añadirías a esta sección.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *