R “之间的区别”;解析";及;表达方式;
我发现使用“parse”函数解析表达式和使用类“expression”定义表达式之间有区别,下面是代码和结果R “之间的区别”;解析";及;表达方式;,r,R,我发现使用“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=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格式,任何人都可以帮助我,我很感激。虽然
parse
返回一个表达式
,但该结构与由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")
非常感谢你,J.R,你已经解决了一个困扰我几天的问题,或者从
a
获取数据,我们可以写:setNames(as.expression(a[[1]][[3]])、as.character(a[[1]][[2]])
,非常感谢添加。重点是ofc。a的name属性缺失
> a <- structure(parse(text="0"), .Names = "ar1")
> a$ar1
[1] 0