У меня возникли проблемы с загрузкой моего набора данных в разреженную матрицу в R. Я использую пакет Matrix. Данные у меня есть в форме x y value
. Например:R координатно-парные пары в разреженной матрице
V1 V2 V3
1 2 .34
7 4 .56
4 5 .62
, где я хотел бы сделать эквивалент
myMatrix[1,2] = .34
myMatrix[7,4] = .56
myMatrix[4,5] = .62
автоматизированным способом.
Я хочу сделать что-то вроде:
myMatrix = Matrix(nrow=numrows, ncol=numcols)
myMatrix[mydata[1:numrows, 1], mydata[1:numrows, 2]] <- mydata[1:numrows, 3]
, но это делает мою сплошную матрицу lgeMatrix, когда мне нужно числовой матрицы.
Я также попытался:
myMatrix = Matrix(nrow=numrows, ncol=numcols)
for(i in 1:numrows){
myMatrix[mydata[i, 1], mydata[i, 2]] <- mydata[i, 3]
}
который создает вид матрицы Я хочу, но это занимает слишком много времени (более 5 минут). Я знаю, что это работает, потому что, когда я его останавливаю, я проверяю первые несколько значений, и они верны, но последние значения - NA. Я работаю с матрицей 7095 на 5896 с значениями 247158, чтобы войти, поэтому цикл for не может быть и речи, если только я не буду нетерпеливым.
Мой вопрос: каков предпочтительный способ сделать это в R?
обновление:
Я понял это с помощью sparseMatrix
вместо:
myMatrix = sparseMatrix(i = mydata[1:numrows,1], j = mydata[1:numrows,2],
x = mydata[1:numrows,3])
не поняло sparseMatrix
использования в других post
Означает ли это, что ответь свой вопрос? http://stackoverflow.com/questions/1274171/creating-and-accessing-a-sparse-matrix-in-r То есть, попробуйте 'library (Matrix)' then 'myMatrix <- sparseMatrix (V1, V2, x = V3) ' –
Один из способов включен в этот более общий ответ: http://stackoverflow.com/a/9617424/210673 – Aaron