r - 将代表扩展到矩阵?
问题描述
如果你调用rep
一个矩阵,它会重复它的元素而不是整个矩阵。传统的解决方法是调用rep(list(theMatrix),...)
. 我想扩展rep
以便它自动执行此操作。
我试图使用
rep.matrix<-function(x,...) rep(list(x),...)
这确实增加rep.matrix
了methods(rep)
> methods(rep)
[1] rep.bibentry* rep.Date rep.factor rep.matrix
[5] rep.numeric_version rep.POSIXct rep.POSIXlt rep.roman*
see '?methods' for accessing help and source code
但是,在矩阵上调用 rep 似乎并没有发送到rep.matrix
.
> rep(diag(5),3)
[1] 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0
[42] 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1
虽然直接调用rep.matrix
没有错误。
> rep.matrix(diag(5),3)
[[1]]
[,1] [,2] [,3] [,4] [,5]
[1,] 1 0 0 0 0
[2,] 0 1 0 0 0
[3,] 0 0 1 0 0
[4,] 0 0 0 1 0
[5,] 0 0 0 0 1
[[2]]
[,1] [,2] [,3] [,4] [,5]
[1,] 1 0 0 0 0
[2,] 0 1 0 0 0
[3,] 0 0 1 0 0
[4,] 0 0 0 1 0
[5,] 0 0 0 0 1
[[3]]
[,1] [,2] [,3] [,4] [,5]
[1,] 1 0 0 0 0
[2,] 0 1 0 0 0
[3,] 0 0 1 0 0
[4,] 0 0 0 1 0
[5,] 0 0 0 0 1
如果我创建和使用rep.array
而不是rep.matrix
.
我的错误在哪里?为什么不rep
派送rep.matrix
?我是否以某种方式使用了错误的对象系统?
解决方案
这是无法做到的。关于这个事实,文档并不太公开,而是rep
一个内部通用函数,如此处所述。这意味着它只会分派给is.object
返回的东西TRUE
。矩阵不是这样的东西,因此您不能扩展rep
到矩阵并将其分派给它们。
推荐阅读
- sql - Flutter - sqflite:如何更改持久化数据的顺序(索引)?
- upload - 如何通过 API 将 rdf 文件上传到 GraphDB
- go - os.UserHomeDir() 与 sudo 返回 /root
- ios - iOS MKLocalSearch 导致崩溃
- php - 上周和上个月如何使用 wp_query woocommerce 获得畅销产品
- c++ - 为什么我的两个元组包含字符串,以相同的方式创建,不相等?
- c# - 使用不同的 ItemSource WPF C# 绑定属性
- django - /new_food/(?P6\d+)/ 处的 IntegrityError:NOT NULL 约束失败:food_entry.refer_id
- go - 如何指定 GoFPDF 字体的字体 URL?
- java - 无法使用弹簧批处理读取大文件(8GB)