gpt4 book ai didi

r - 在 R 中,如何将整个命令行放入二元运算符的 sys.call() 中?

转载 作者:行者123 更新时间:2023-12-04 14:31:52 27 4
gpt4 key购买 nike

我为 R 编写了一个二元运算符函数(即一个名为 %X% 的函数,这样我就不必输入 %X%(a,b) 我可以使用更方便的语法 a %X% b 。我的目标是为 <- 提供一个包装器它会记录在该环境中对对象所做的事情,并检查“ protected ”属性,该属性会在覆盖该对象之前警告用户。

所有这些都有效,除了如果我尝试做类似 a %X% b + c 的事情在函数内部,你看到的只有 a %X% b _这也是它所做的一切; a 被分配了 b 的值,而 c 被完全忽略。 a %X% (b + c)有效,同样有效 %X%(a, b + c)但是把它写成二元运算符的重点是避免括号。

如果我覆盖 <- ,其 sys.call()看到它左边和右边的一切。为什么我的只能从命令行看到相邻的名称?

这是复制此问题的代码:

`%X%` <- function(...){
print(deparse(sys.call()));
}

a %X% 3 + 1:10;

想要的结果是“a %X% 3 + 1:10”
观察到的结果是“a %X% 3”

谢谢。

最佳答案

这与运算符优先级有关,参见 ?Syntax寻求更多帮助。它说特殊运算符 ( %any% ) 像您要定义的运算符一样具有比二进制 + 更高的优先级,所以除了使用括号并执行 a %X% (b + c) 之外,您别无他法(AFAIK) .

关于r - 在 R 中,如何将整个命令行放入二元运算符的 sys.call() 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11813599/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com