У меня есть три разреженных матрицы dgCMatrix, построенные с использованием пакета Matrix. Строки этих двух матриц находятся не в том же порядке, поэтому я хотел бы изменить их на имена розеток, чтобы я мог добавить три матрицы вместе. У кого-нибудь есть намек на быстрый способ сделать это?R - переупорядочение разреженной матрицы по именам ростов
Спасибо большое,
Николя
Вот небольшой пример, где ZZ неправильно, потому что матрицы не в том же порядке:
dat <-data.frame(fac1=factor(c("small","large"),levels=c("small","large","medium")),fac2=factor(c("medium","large"),levels=c("medium","large","small")),fac3=factor(c("small","medium"),levels=c("small","medium","large")))
Zl <- lapply(c("fac1","fac2","fac3"), function(nm) Matrix:::fac2sparse(dat[[nm]], "d",drop=F))
ZZ <- Reduce("+", Zl[-1], Zl[[1]])
Я не думаю, что я изменит что-либо в последовательности записей, хранящихся в разреженной матрице. Для обычной матрицы или dataframe решение ниже, безусловно, работает, но я не уверен, что индексирование ненулевых элементов в dgCMatrix будет по-прежнему иметь смысл после изменения порядка строк. – RHertel