R语言中如何将值赋给函数调用的结果?
R 中
function(variable) <- value 语法原理 这是R语言特有的**替换函数(replacement function)**语法糖,本质是解析器对特殊写法的自动转换,不存在“给函数返回值赋值”的逻辑,完全符合常规函数调用规则。
实际运行逻辑
你写的width(myIRange) <- 3 这行代码,R会自动识别格式,转换为调用带<-后缀的同名替换函数,等效代码如下:
myIRange <- `width<-`(myIRange, value = 3)
- 替换函数的命名规则就是在普通访问函数名后加
<-后缀,因为函数名包含特殊字符,直接调用时需要用反引号包裹 - 这类函数的统一约定是:第一个参数传入要修改的原始对象,最后一个参数传入要设置的值,执行完成后返回修改后的新对象,再赋值回原变量名,就实现了修改原变量的效果
- 日常常用的
names(x) <- c("a","b")、x[2] <- 10都是相同机制,分别对应names<-、[<-两个内置替换函数
设计逻辑
这种设计和Python的属性赋值本质作用一致,只是R选择用成对函数封装读写逻辑,灵活性更高:
- 不带后缀的
width()是取值用的访问函数,负责读取对象的width属性 - 带
<-后缀的`width<-`是赋值函数,负责写入width属性,开发者还可以在这个函数内自定义赋值前的校验规则、联动修改其他关联属性等逻辑,比直接修改对象属性可控性更强
内容的提问来源于stack exchange,提问作者KangarooChief
相关产品推荐
相关产品推荐

