2012-12-10 5 views
5

Ich versuche bigmemory Paket in R zu verwenden, und ich stecke ganz am Anfang. Ich mache:R :: bigmemory - wie man Charakter big.matrix erstellt?

temp <- matrix(paste("a",1:10), 5, 2) 

und erhalten Sie eine Zeichenmatrix. Das ist ok. Aber dann versuche ich:

x <- as.big.matrix(temp, type="char") 

und ich bekomme eine Matrix voll von NA und die folgende Meldung:

Assignment will down cast from double to char 
Hint: To remove this warning type: options(bigmemory.typecast.warning=FALSE) 
Warning messages: 
1: In as.big.matrix(temp, type = "char") : Casting to numeric type 
2: In matrix(as.numeric(x), nrow = nrow(x), dimnames = dimnames(x)) : 
NAs introduced by coercion 
3: In SetElements.bm(x, i, j, value) : 

Ich bin nicht sicher, was los ist, aber es sieht big.matrix versucht, alle zu konvertieren meine Texte in Zahlen trotz type = "char". Wie funktioniert es?

Antwort

6

Dies ist ein bisschen irreführend - big.matrix-Objekte speichern nur numerische Datentypen. Der Typ "char" ist ein C++ - Datentyp, der zum Speichern ganzzahliger Werte verwendet wird, die ASCII-Zeichencodes darstellen (ein einzelnes Zeichen, keine Zeichenfolge). Um Zeichenfolgen in einer großen.matrix zu speichern, müssen Sie die Zeichenfolgen als numerische Werte neu codieren (oder in Faktoren umwandeln und dann in numerische Werte konvertieren).

Wenn Sie Zeichendaten in einem sehr großen Datensatz speichern müssen, sollten Sie sich das Paket 'ff' ansehen. Nach meiner Erfahrung hat es eine steile Lernkurve und die Dokumentation fehlt etwas, aber es hat diese Funktionalität.

Weitere Einzelheiten zu mit großen Datenmengen zu tun, können Sie hier die CRAN Task View check out: http://cran.r-project.org/web/views/HighPerformanceComputing.html

+0

Ihnen so vielen Dank. Jetzt hab ich es verstanden. – user1890450

Verwandte Themen