Подтвердить что ты не робот

Ошибка: неожиданный символ/ввод/строка константа/числовая константа /SPECIAL в моем коде

Я получил одну из этих ошибок.

Error: unexpected symbol in "<my code>"    
Error: unexpected input in "<my code>"
Error: unexpected string constant in "<my code>"  
Error: unexpected numeric constant in "<my code>"   
Error: unexpected SPECIAL in "<my code>"         
Error: unexpected '<some punctuation>' in "<my code>" 
Error: unexpected '<reserved word>' in "<my code>"        

Что означает ошибка, и как я могу ее исправить?

Некоторые простые примеры, которые воспроизводят ошибки и общие варианты:

a a
## Error: unexpected symbol in "a a"
a\
## Error: unexpected input in "a\"
a""
## Error: unexpected string constant in "a"""
""1
## Error: unexpected numeric constant in """1"
%%
## Error: unexpected SPECIAL in "%%"
,
## Error: unexpected ',' in ","
=
## Error: unexpected '=' in "="
)
## Error: unexpected ')' in ")"
else
## Error: unexpected 'else' in "else"
4b9b3361

Ответ 1

Эти ошибки означают, что код R, который вы пытаетесь запустить или источник, не является синтаксически правильным. То есть у вас опечатка.

Чтобы устранить проблему, внимательно прочитайте сообщение об ошибке. Код, указанный в сообщении об ошибке, показывает, где R считает, что проблема в этом. Найдите эту строку в вашем исходном коде и найдите опечатку.


Профилактические меры для предотвращения повторного появления ошибки

Лучший способ избежать синтаксических ошибок - это написать стильный код. Таким образом, когда вы наберете ошибки, проблему будет легче обнаружить. Есть много руководств в стиле R, связанных со страницей информации тега SO R. Вы также можете использовать пакет formatR для автоматического форматирования вашего кода во что-то более удобочитаемое. В RStudio сочетание клавиш CTRL + SHIFT + A переформатирует ваш код.

Подумайте об использовании IDE или текстового редактора, который выделяет совпадающие скобки и фигурные скобки, а также отображает строки и числа разными цветами.


Распространенные синтаксические ошибки, которые порождают эти ошибки

Несоответствующие скобки, скобки или скобки

Если у вас есть вложенные скобки, скобки или скобки, очень легко закрыть их слишком много или слишком мало раз.

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

Отсутствует * при умножении

Это распространенная ошибка математиков.

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

Не переносить, если, для или вернуть значения в скобках

Это распространенная ошибка пользователей MATLAB. В R, if for, return и т.д. Являются функциями, поэтому вам необходимо заключить их содержимое в скобки.

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

Не использовать несколько строк для кода

Попытка записать несколько выражений в одну строку без разделения их точкой с запятой приводит к сбою R, а также затрудняет чтение кода.

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

else начинается с новой строки

В операторе if - else ключевое слово else должно появляться в той же строке, что и конец блока if.

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

= вместо ==

= используется для присваивания и присвоения значений аргументам функции. == проверяет два значения на равенство.

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

Отсутствие запятых между аргументами

При вызове функции каждый аргумент должен быть разделен запятой.

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

Не заключать в кавычки пути к файлам

Пути к файлам - это просто строки. Они должны быть заключены в двойные или одинарные кавычки.

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

Цитаты внутри строк

Это распространенная проблема при попытке передать значения в xPath в оболочку через system или при создании запросов xPath или sql xPath.

Двойные кавычки внутри строки в двойных кавычках должны быть экранированы. Аналогично, одиночные кавычки внутри строки в одинарных кавычках должны быть экранированы. В качестве альтернативы, вы можете использовать одинарные кавычки внутри строки в двойных кавычках без экранирования и наоборот.

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

Использование кавычек

Так называемые "умные" цитаты не так умны для программирования на R.

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

Использование нестандартных имен переменных без обратных кавычек

?make.names описывает, что составляет допустимое имя переменной. Если вы создаете недопустимое имя переменной (возможно, с помощью assign), вам нужно получить к нему обратные кавычки,

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

Это также относится к именам столбцов во фреймах данных, созданных с помощью 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

Это также применяется при передаче операторов и других специальных значений в функции. Например, поиск справки по %in%.

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

Sourcing не код R

Функция source запускает код R из файла. Он сломается, если вы попытаетесь использовать его для чтения ваших данных. Вероятно, вы хотите read.table.

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

Поврежденный файл рабочего стола RStudio

Пользователи RStudio сообщили об ошибочных исходных ошибках из-за поврежденного .rstudio-desktop. Эти отчеты были опубликованы только в марте 2014 года, поэтому, возможно, проблема связана с конкретной версией среды IDE. RStudio можно сбросить, используя инструкции на странице поддержки.


Использование выражения без вставки в математических сюжетных аннотациях

При попытке создать математические метки или заголовки на графиках созданное выражение должно быть синтаксически допустимым математическим выражением, как описано на странице " ?plotmath. В противном случае содержимое должно содержаться внутри вызова для вставки.

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

Ответ 2

Для меня ошибка была:

Error: unexpected input in "�"

и исправлением было открытие скрипта в шестнадцатеричном редакторе и удаление первых 3 символов из файла. Файл начинался с спецификации UTF-8, и кажется, что Rscript не может это прочитать.

РЕДАКТИРОВАТЬ: OP запросил пример. Здесь это идет.

➜  ~ cat a.R
cat('hello world\n')
➜  ~ xxd a.R
00000000: efbb bf63 6174 2827 6865 6c6c 6f20 776f  ...cat('hello wo
00000010: 726c 645c 6e27 290a                      rld\n').
➜  ~ 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 world\n')
Error: unexpected input in "�"
Execution halted

Ответ 3

библиотека (lavaan)

modela1 <- 'Ошибка: неожиданная'> 'в ">"

что это значит?