R语言置换函数的定义
2015-08-17 13:11
239 查看
R中可以自定义置换函数。 所谓的置换函数,就是左边不是变量名的赋值语句。例如:
names(x) <- c(‘a’, ‘b’)
这个语句设置了x的元素名称,它就是一个置换函数,因为左边不是变量名。从下面的例子就可以看出来发生了什么:
结果:
从上面可以看出,names(x) <- value这个句子实际上调用的函数是’names<-‘(x, value),这个函数会返回更新名称后的对象。
下面的例子说明如何自己定义置换函数:
结果:
下面的例子与上面的例子类似,但是定义了S3类的方法:
结果:
names(x) <- c(‘a’, ‘b’)
这个语句设置了x的元素名称,它就是一个置换函数,因为左边不是变量名。从下面的例子就可以看出来发生了什么:
x <- list(1:10, 2:11) names(x) <- c('a', 'b') y <- list(1:10, 2:11) y <- 'names<-'(x = x, value = c('a', 'b')) x y
结果:
x ## $a ## [1] 1 2 3 4 5 6 7 8 9 10 ## ## $b ## [1] 2 3 4 5 6 7 8 9 10 11 y ## $a ## [1] 1 2 3 4 5 6 7 8 9 10 ## ## $b ## [1] 2 3 4 5 6 7 8 9 10 11
从上面可以看出,names(x) <- value这个句子实际上调用的函数是’names<-‘(x, value),这个函数会返回更新名称后的对象。
下面的例子说明如何自己定义置换函数:
obj <- list(x = 1:10, y = 1 : 10) class(obj) <- 'test' 'xvar<-' <- function (x, value) { x$x <- value return(x) } xvar(obj) <- 11 : 20 print(obj)
结果:
## $x ## [1] 11 12 13 14 15 16 17 18 19 20 ## ## $y ## [1] 1 2 3 4 5 6 7 8 9 10 ## ## attr(,"class") ## [1] "test"
下面的例子与上面的例子类似,但是定义了S3类的方法:
obj <- list(x = 1:10, y = 1 : 10) class(obj) <- 'test' 'xvar<-' <- function (x, ...) { UseMethod('xvar<-') } 'xvar<-.test' <- function (x, value) { x$x <- value return(x) } xvar(obj) <- 11 : 20 print(obj)
结果:
## $x ## [1] 11 12 13 14 15 16 17 18 19 20 ## ## $y ## [1] 1 2 3 4 5 6 7 8 9 10 ## ## attr(,"class") ## [1] "test"
相关文章推荐
- HDU 1015.Safecracker【暴力枚举】【8月17】
- 你的充电宝能否上飞机
- MongoDB Shell中执行增
- MongoDB shell中执行删除
- 一步一步开发电商平台 区域广告实现
- Scala 入门——Eclipse开发环境搭建
- ZOJ 3261 Connections in Galaxy War
- STLport
- div层调整z-index属性在IE中无效原因分析及解决方法
- MongoDB shell中执行查询
- 常用的文件文件夹目录的操作函数
- Android------以后进先出的方式加载图片
- 根据指定颜色生成图片
- 归因的偏差
- Agar 流体效果的 Cocos2d-JS 实现
- hadoop MR 任务 报错 "Error: java.io.IOException: Premature EOF from inputStream at org.apache.hadoop.io"
- MongoDB Shell常用命令
- [LeetCode] Best Time to Buy and Sell Stock II
- hadoop MR 任务 报错 "Error: java.io.IOException: Premature EOF from inputStream at org.apache.hadoop.io"
- 黑马程序员-----Java基础-----String