我发现使用“ parse”函数解析表达式与使用“ expression”类定义表达式之间是有区别的,这是代码和结果。
> a=parse(text="ar1 = 0")
> b=expression(ar1=0)
> a
expression(ar1 = 0)
> b
expression(ar1 = 0)
> a$ar1
NULL
> b$ar1
[1] 0
如代码所示,尽管 a 和 b 均为“表达式(ar1 = 0) “,但无法查询 a 的元素 ar1 ,我想转换 a 格式化 b ,任何人都可以帮助我,我会感激不尽。
答案 0 :(得分:2)
尽管parse
返回一个expression
,但其结构与expression()
创建的结构不同,
看看str
:
> str(a)
length 1 expression(ar1 = 0)
- attr(*, "srcref")=List of 1
..$ :Class 'srcref' atomic [1:8] 1 1 1 7 1 7 1 1
.. .. ..- attr(*, "srcfile")=Classes 'srcfilecopy', 'srcfile' <environment: 0x000000000e0aaa00>
- attr(*, "srcfile")=Classes 'srcfilecopy', 'srcfile' <environment: 0x000000000e0aaa00>
- attr(*, "wholeSrcref")=Class 'srcref' atomic [1:8] 1 0 2 0 0 0 1 2
.. ..- attr(*, "srcfile")=Classes 'srcfilecopy', 'srcfile' <environment: 0x000000000e0aaa00>
> str(b)
structure(expression(ar1 = 0), .Names = "ar1")
我们注意到str(b)
具有名称属性。我们也可以尝试给a
一个:
> a <- structure(parse(text="0"), .Names = "ar1")
> a$ar1
[1] 0