• R语言
  • R中是否有复制平铺矩阵的函数

Matlab中有repmat函数:

A =

1 1 1

repmat(A,[3 1])

就可以得到:

ans =

1 1 1

1 1 1

1 1 1

这样按行平铺的矩阵,

请问R中是否有类似的函数呢?[s:16]

# repeat a matrix like the MATLAB grammar<br />
repmat <- function(A, N, M) {
	kronecker(matrix(1, N, M), A)
}

没有可以自己造:

<br />
repmat <- function(m,n) {<br />
   a <- rep(1,times=m*n)<br />
   matrix(a,m,n)<br />
  }<br />
repmat(3,3)<br />
     [,1] [,2] [,3]<br />
[1,]    1    1    1<br />
[2,]    1    1    1<br />
[3,]    1    1    1<br />
</p>

回复 第2楼 的 nan.xiao:

谢谢版主!

谢谢楼上!

学习了

三楼完全等价于 matrix(a, m, n) 还只能填充一个数值 这是要闹哪样 [s:12]

回复 第5楼 的 nan.xiao:这就是传说中的逗你玩。赞kronecker()

2 个月 后

经常感慨学习R是一个无止境的过程,再感慨一下

7 个月 后

为什么我的第一直觉是rbind和cbind[s:12]

7 个月 后

回复 第2楼 的 肖楠:# 矩阵平铺的3个方案

kronecker(matrix(1, N, M), A) #效率低

A = A[rep(1:N,M),] #效率高

B = B[sequence(rep(N,M)),] #效率高

推荐后面两种

回复 第10楼 的 flystarhe:

是快了10倍吧,不过正确的写法是

A[rep(1:nrow(A), N), rep(1:ncol(A), M)]
</p>