r - 赋值运算符的重载与长度函数的组合如何工作?

标签 r operator-overloading

length() 的变异实现是如何工作的?

示例:给定一个向量 v,如何将长度设置为 12?

length(v) <- 12

我能否创建自己的函数以相同的方式重载运算符?

示例:将所有其他元素设置为 7

everyOther(v) <- 7

最佳答案

那些赋值函数就是函数。它们可以写成以下形式(注意反引号 - 必须使用它们),其中 fname区分函数名。

`fname<-` <- function(x, value) { ... }

所以你的 everyOther赋值函数可以写成

`everyOther<-` <- function(x, value) {
    x[c(FALSE, TRUE)] <- value
    x
}

我们可以像使用它一样使用它 length(x) <- value

v <- 1:20
everyOther(v) <- 7
v
# [1]  1  7  3  7  5  7  7  7  9  7 11  7 13  7 15  7 17  7 19  7

关于r - 赋值运算符的重载与长度函数的组合如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53471699/

相关文章:

python - 为什么我的 Python 脚本比它的 R 脚本慢得多?

r - 在 R 中按用户获取已安装软件包的列表

c# - 无法为对象类重载运算符 '+'

c++ - C++ 中的运算符重载 + 和 +=

r - 如何根据类别排列数据框,然后改变新的协变量,列出适合特定类别的所有名称

r - 如何使用 R Markdown 在 html 输出中创建动画

c++ - 难以实现 -> 结构取消引用运算符

c++ - 关于重载运算符+的问题

c++ - 为分数类 C++ 重载 >>

Excel 工作簿的 R Download.File 问题