options for working with sparse matrices in R'u öğrendikten sonra, aşağıdaki veri çerçevesinden seyrek bir matris oluşturmak için Matrix paketini kullanmak istiyorum ve diğer tüm öğelerin NA
olmasını sağlayın. Ben NA olmak varsayılan değere sahip istiyorsanızNA varsayılan girişleriyle bir Seyrek Matris Oluşturma (ve Erişim)
> library(Matrix)
> Y <- sparseMatrix(s,r,x=d)
> Y[1089,3772]
[1] 1
> Y[1,1]
[1] 0
ama, ben şu çalıştı:
s r d
1 1089 3772 1
2 1109 190 1
3 1109 2460 1
4 1109 3071 2
5 1109 3618 1
6 1109 38 7
her zamanki gibi unsurları erişen, ben aşağıdaki ile seyrek matris oluşturmak biliyorum
M <- Matrix(NA,max(s),max(r),sparse=TRUE)
for (i in 1:nrow(X))
M[s[i],r[i]] <- d[i]
ve bu hata var
Error in checkSlotAssignment(object, name, value) :
assignment of an object of class "numeric" is not valid for slot "x" in an object of class "lgCMatrix"; is(value, "logical") is not TRUE
Sadece bu değil, öğelere erişmek için daha uzun sürüyor.
> system.time(Y[3,3])
user system elapsed
0.000 0.000 0.003
> system.time(M[3,3])
user system elapsed
0.660 0.032 0.995
Bu matrisi nasıl oluşturmalıyım? Bir matris neden bu kadar yavaş çalışıyor?
X <- structure(list(s = c(1089, 1109, 1109, 1109, 1109, 1109), r = c(3772,
190, 2460, 3071, 3618, 38), d = c(1, 1, 1, 2, 1, 7)), .Names = c("s",
"r", "d"), row.names = c(NA, 6L), class = "data.frame")
Teşekkürler! StackOverflow'ta daha fazla cevabınızı görmeyi dört gözle bekliyorum. Matrix'i kullanırken karşılaştığım bazı soruları denemeye çalışacağım ... –
Sıfır olmayan tüm hücrelerin her zaman depolanmış olması talihsiz bir durum. Bir sparseMatrix için sıfırdan farklı bir varsayılan değer belirtmek güzel olurdu. – Quantum7
SparseMatrix için varsayılan değer var mı diye düşünüyorum? – hs3180