Если вы вызываете 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()
. Вы должны сообщить об этом. - person user2554330   schedule 20.02.2021