Если есть одинаковые nrows cbind два datas

Как сказать R связать две матрицы, только если они имеют одинаковое количество строк?

Я знаю, что могу проверить это вручную.


person Shaxi Liver    schedule 12.03.2014    source источник
comment
если (nrow(X)==nrow(Y)) Z ‹- cbind(X, Y) ??   -  person droopy    schedule 12.03.2014


Ответы (1)


Сделайте функцию, например:

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
person Spacedman    schedule 12.03.2014