【发布时间】:2014-03-12 13:58:02
【问题描述】:
如何告诉 R 仅当两个矩阵的行数相同时才 cbind ?
我知道我可以手动检查。
【问题讨论】:
-
if (nrow(X)==nrow(Y)) Z
如何告诉 R 仅当两个矩阵的行数相同时才 cbind ?
我知道我可以手动检查。
【问题讨论】:
制作一个函数,比如:
ckbind = function (a, b)
{
a = as.matrix(a)
b = as.matrix(b)
if (nrow(a) == nrow(b)) {
return(cbind(a, b))
} else {
stop("Differing number of rows")
}
}
注意矩阵转换,因此它适用于向量。测试:
> ckbind(1:3,2:4)
[,1] [,2]
[1,] 1 2
[2,] 2 3
[3,] 3 4
> ckbind(1:3,2:6)
Error in ckbind(1:3, 2:6) : Differing number of rows
并检查它是否适用于矩阵:
> ckbind( ckbind(1:3,2:4), ckbind(3:5,4:6))
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 2 3 4 5
[3,] 3 4 5 6
【讨论】: