12

R で文字列を解析しようとしています。文字列に数字の後にハイフンが続く場合、R は「予期しない記号」または「予期しない入力の終わり」例外をスローします (コードを参照してください)。この問題を解決するためにさまざまな方法を検索して試しても役に立ちませんでした。多分、私の知識不足です。ヘルプやアドバイスをいただければ幸いです。

> str <- "abc12-3def"
> parse(text = str)
Error in parse(text = str) : <text>:1:8: unexpected symbol
1: abc12-3def
          ^

また

> str <- "abc123-"
> parse(text = str)
Error in parse(text = str) : <text>:2:0: unexpected end of input
1: abc123-
  ^

ただし、次の例はすべて正常に動作します

> str <- "abc123def"
> parse(text = str)
expression(abc123def)

また

> str <- "abc123-def"
> parse(text = str)
expression(abc123-def)

また

> str <- "abc12-3"
> parse(text = str)
expression(abc12-3)

事前にどうもありがとうございました!

4

2 に答える 2

13

parse次の方法で簡単に動作を再現できます。

str <- "3a"
parse(text = str)

parsestr を変数名として解析してみてください。または、使用可能な変数名を指定する必要があります。数字で始まらないか、``. 次の作品:

str <- "`3a`"
parse(text = str)

あなたの例では、これも機能します:

str <- "abc12-`3def`"
parse(text = str)

最後に、2 番目の例では、解析できる式を指定しないため、機能しないというロジックです。

str <- "abc123-"  ## this will like myvar-

あなた-が単なる文字列セパレーターである場合、それをに変換しないのはなぜ_ですか? 例えば:

 parse(text=gsub('-','_',str))
于 2013-07-14T12:29:26.917 に答える
1

ポイントはparse、入力テキストを R 言語の式に変換することです。あなたがタイプしたかのように

abc12-3def

R プロンプトでは、構文エラーがスローされるため、parse. 任意のテキストを投げて、それが賢明なものを提供すると仮定することはできません。

于 2013-07-14T13:28:43.393 に答える