我搜索了一个参考来了解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中的任何值设置为大于65Inf(无穷大)).

当你像这样调用函数时,神奇的事情就发生了

cutoff(x) <- 65

因为R正在解析它,并提取不同的位来进行上面所示的真正调用.

更一般地说,我们有

FUN(obj) <- value

R找到函数"FUN<-"()并通过将objvalue传递到"FUN<-"()来设置调用and安排将"FUN<-"()的结果分配回obj,因此它调用:

obj <- "FUN<-"(obj, value)

这一信息的一个有用参考是R Language Definition Section 3.4.4: Subset assignment ;讨论有点偏颇,但似乎是最正式的参考(在R FAQ(R和S-PLUS之间的差异)和R语言参考(各种技术问题)中顺便提到了替换函数,但我在官方文档中没有找到任何进一步的讨论).

R相关问答推荐

R:随机抽取所有可能排列的样本

手工PCA上的载体与输出双图不匹配

保存shiny 的代码嗅探器:避免$ Symbol问题

提取rame中对应r中某个变量的n个最小正值和n个最大负值的条目

在特定列上滞后n行,同时扩展框架的长度

无法在我的情节中表现出显着的差异

找出疾病消失的受试者

如何计算前一行的值,直到达到标准?

如何在kableextra调用cell_spec()中忽略NA?

修改用R编写的用户定义函数

在某些栏和某些条件下,替换dfs列表中的NA

使用across,starts_with和ifelse语句变更多个变量

如何在R中描绘#符号?

如何在R forestplot中为多条垂直线分配唯一的 colored颜色 ?

如何用书面利率绘制geom_bar图

使用Scale_*_MANUAL时在图例中保留未使用的系数级别

如何将一些单元格的内容随机 Select 到一个数据框中?

如何筛选截止年份之前最后一个测量年度的所有观测值以及截止年份之后所有年份的所有观测值

我需要使用ggplot2制作堆叠条形图

有毒元素与表观遗传年龄的回归模型