假设我正在使用R的反引号运算符构建表达式bquote,并且我想在特定位置的列表中"拼接"(即,丢失列表的外括号).
例如,我有"5 + 4"这个表达式,我想在它的开头添加一个"6-",而不使用字符串操作(也就是说,完全在符号结构上操作时).
所以:
> b = quote(5+4)
> b
5 + 4
> c = bquote(6-.(b))
> c
6 - (5 + 4)
> eval(c)
[1] -3
Run Code Online (Sandbox Code Playgroud)
我希望能够返回"6-5 + 4"的评价,所以5.
在常见的lisp中,反引号"`"运算符带有一个拼接运算符",@",就是这样做的:
CL-USER>
(setf b `(5 + 4))
(5 + 4)
CL-USER>
(setf c `(6 - ,@b))
(6 - 5 + 4)
CL-USER>
(setf c-non-spliced `(6 - ,b))
(6 - (5 + 4))
CL-USER>
Run Code Online (Sandbox Code Playgroud)
我尝试在R中使用.@(b),但这不起作用.还有其他想法吗?重申一下,我不想诉诸字符串操作.
r ×1