我搜索了一个参考来了解R中的替换函数,但还没有找到.我试图理解R中替换函数的概念.我有下面的代码,但我不理解:
"cutoff<-" <- function(x, value){
x[x > value] <- Inf
x
}
然后我们称之为切断:
cutoff(x) <- 65
谁能解释一下R中的替换函数是什么?
我搜索了一个参考来了解R中的替换函数,但还没有找到.我试图理解R中替换函数的概念.我有下面的代码,但我不理解:
"cutoff<-" <- function(x, value){
x[x > value] <- Inf
x
}
然后我们称之为切断:
cutoff(x) <- 65
谁能解释一下R中的替换函数是什么?
当你打电话的时候
cutoff(x) <- 65
你实际上是在打电话
x <- "cutoff<-"(x = x, value = 65)
函数名必须被引用,因为它是语法上有效但非标准的名称,如果没有被引用,解析器会将<-
解释为运算符,而不是函数名的一部分.
"cutoff<-"()
和其他任何函数一样(尽管名字很奇怪);它在value
的基础上对输入参数进行更改(在本例中,它将x
中的任何值设置为大于65
到Inf
(无穷大)).
当你像这样调用函数时,神奇的事情就发生了
cutoff(x) <- 65
因为R正在解析它,并提取不同的位来进行上面所示的真正调用.
更一般地说,我们有
FUN(obj) <- value
R找到函数"FUN<-"()
并通过将obj
和value
传递到"FUN<-"()
来设置调用and安排将"FUN<-"()
的结果分配回obj
,因此它调用:
obj <- "FUN<-"(obj, value)
这一信息的一个有用参考是R Language Definition Section 3.4.4: Subset assignment ;讨论有点偏颇,但似乎是最正式的参考(在R FAQ(R和S-PLUS之间的差异)和R语言参考(各种技术问题)中顺便提到了替换函数,但我在官方文档中没有找到任何进一步的讨论).