在数字后用连字符解析(text = string)时出现意外的符号错误

时间:2013-07-14 12:20:20

标签: r parsing

我正在尝试解析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)

非常感谢你!

2 个答案:

答案 0 :(得分:6)

您可以使用

轻松重现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))

答案 1 :(得分:1)

parse的要点是将输入文本转换为R语言表达式。就像你输入

一样
abc12-3def

在R提示符下,它会抛出语法错误,parse也是如此。你不能只是在它上面扔任意文字,并假设它会给你一些明智的东西。