1. ホーム
  2. r

[解決済み】エラー:私のコードで予期しないシンボル/入力/文字列定数/数値定数/SPECIALが発生した

2022-01-19 13:10:38

質問

このようなエラーが発生しました。

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"

解決するには?

これらのエラーは、実行しようとしているRコードやソースが構文的に正しくないことを意味します。 つまり、タイプミスがあるのです。

問題を解決するには、エラーメッセージをよく読んでください。 エラーメッセージの中で提供されるコードは、Rがどこに問題があると考えるかを示しています。 元のコードからその行を探し、タイプミスを探してください。


再びエラーが発生しないようにするための予防策

構文エラーを回避する最善の方法は、スタイリッシュなコードを書くことです。 そうすれば、ミスタイプをしたときに、その問題を発見しやすくなります。 多くのRスタイルガイドが SO Rタグ情報 のページをご覧ください。 また formatR パッケージを使用すると、コードを自動的に読みやすいものに整形することができます。 RStudio では、キーボードショートカットの {を使用します。 CTRL + シフト + A はコードを再フォーマットします。

一致する括弧や中括弧を強調表示したり、文字列や数値を異なる色で表示するIDEやテキストエディタの使用を検討してください。


これらのエラーを発生させる一般的な構文エラー

括弧、中括弧、大括弧の不一致

括弧、中括弧、括弧を入れ子にしている場合、括弧を閉じる回数が多すぎたり少なすぎたりしがちです。

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

行方不明 {コード 乗算の場合

これは数学者がよくやる間違いです。

*

if、for、戻り値を括弧でくくらない

これはMATLABのユーザーがよく犯すミスです。 Rでは {コード , 5x Error: unexpected symbol in "5x" 5*x # OK , {コード などは関数なので、その内容を括弧で囲む必要があります。

if

コードに複数行を使用しない

複数の式をセミコロンで区切らずに1行で書こうとすると、Rが失敗するだけでなく、コードが読みづらくなります。

for

return 改行

if x > 0 {} ## Error: unexpected symbol in "if x" if(x > 0) {} # OK - {{コード ステートメントを使用すると、キーワード {コード の末尾と同じ行に表示されなければなりません。 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

system

xPath

sql

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

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

source

read.table

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

.rstudio-desktop


?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