我正在尝试解析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)
非常感谢你!
答案 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
也是如此。你不能只是在它上面扔任意文字,并假设它会给你一些明智的东西。