Matlab中有repmat函数:
A =
1 1 1
repmat(A,[3 1])
就可以得到:
ans =
1 1 1
1 1 1
1 1 1
这样按行平铺的矩阵,
请问R中是否有类似的函数呢?[s:16]
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()
。
mark
经常感慨学习R是一个无止境的过程,再感慨一下
为什么我的第一直觉是rbind和cbind[s:12]
回复 第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>