2016-08-16 2 views
2

У меня есть этот код и я не могу понять, как используется rbind.fill.matrix. dtmat - это матрица с документами по строкам и словам на столбцах.Что делает rbind.fill.matrix действительно?

word <- do.call(rbind.fill.matrix,lapply(1:ncol(dtmat), function(i) { 
    t(rep(1:length(dtmat[,i]), dtmat[,i])) 
})) 

Я прочитал описание функции и говорит, что связывает матрицы, но не может понять, какие из них и заполняет NA недостающие столбцы.

ответ

2

Из чего я понимаю, функция заменяет столбцы, которые не связываются с NA. Допустим, у меня есть 2 матрицы A с двумя столбцами col1 и col2, B с тремя столбцами col1, col2 и colA. Поскольку я хочу связать все обе эти матрицы, но rbind только связывает матрицы с равным числом столбцов и одинаковыми именами столбцов, rbind.fill.matrix связывает столбцы, но добавляет NA ко всем значениям, которые должны быть как в неточных матрицах. Код ниже объяснит это более четко.

a <- matrix(c(1,1,2,2), nrow = 2, byrow = T) 
> a 
     [,1] [,2] 
[1,] 1 1 
[2,] 2 2 
> 
> b <- matrix(c(1,1,1,2,2,2,3,3,3), nrow = 3, byrow = T) 
> b 
     [,1] [,2] [,3] 
[1,] 1 1 1 
[2,] 2 2 2 
[3,] 3 3 3 
> 
> library(plyr) 
> r <- rbind.fill.matrix(a,b) 
> r 
    1 2 3 
[1,] 1 1 NA 
[2,] 2 2 NA 
[3,] 1 1 1 
[4,] 2 2 2 
[5,] 3 3 3 
> 
> 

В документации также упоминаются имена столбцов, которые, как я думаю, вы также можете понять из примера.

+0

спасибо большое, это было действительно полезно –

Смежные вопросы