You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言算术运算符参数名失效:能否通过参数名指定运算数?

R语言内置二元运算符的参数名使用问题

观察发现,R语言的内置算术运算符(比如除法运算符/),查看其定义可见参数名为e1和e2,但使用参数名传参时会被忽略,仅按参数位置生效:

`/`(e1 = 1, e2 = 2)
#[1] 0.5

`/`(e2 = 1, e1 = 2) # 此处预期结果应为2
#[1] 0.5

问题:是否只能通过参数位置来指定被除数与除数,还是存在使用参数名的可行方式?

而自定义二元运算符时,参数名不会被忽略,传参时按参数名生效:

`%div%` <- function(e1, e2) {e1 / e2}

`%div%`(e1 = 1, e2 = 2)
#[1] 0.5

`%div%`(e2 = 1, e1 = 2)
#[1] 2

解答

这是因为R的内置二元运算符属于primitive函数(基础原语函数),这类函数底层由C实现,参数处理逻辑和R层面的自定义函数完全不同。它们不会解析传入的参数名,只会按参数位置来接收并处理操作数。

所以对于+、-、*、/这类内置二元运算符,确实只能通过参数位置指定操作数,无法用e1、e2这类参数名调换顺序。如果想要通过参数名控制操作数顺序,只能像示例那样自定义二元运算符,或者手动调整参数位置。

内容的提问来源于stack exchange,提问作者GKi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 06:22:38