假设我用 R 语言的反引号运算符 bquote
来构建一个表达式,并且我想在特定位置上“插入”一个列表(也就是说,去掉列表的外层括号)。
例如,我有一个表达式“5+4”,我想在它前面添加“6-”,但不使用字符串操作(也就是说,完全在符号结构上操作)。
所以:
> b = quote(5+4)
> b
5 + 4
> c = bquote(6-.(b))
> c
6 - (5 + 4)
> eval(c)
[1] -3
我希望它返回"6-5+4"的计算结果,即5。
在Common 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>
我尝试在R中使用.@(b),但没有成功。还有其他的想法吗?重申一遍,我不想使用字符串操作。