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)

parse尝试将您的 str 解析为变量名。或者,你应该给出一个可用的变量名,或者它不应该以数字开头,或者你应该把它放在``. 以下作品:

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

在您的示例中,这也有效:

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

最后,对于您的第二个示例,由于您没有提供可用的表达式来解析,因此逻辑上它不起作用:

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 回答