2012-12-10 12 views
5

Provo a utilizzare il pacchetto bigmemory in R e sono bloccato all'inizio. Faccio:R :: bigmemory - come creare personaggi big.matrix?

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

e ottenere una matrice di caratteri. Va bene. Ma poi cerco:

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

e ottengo una matrice piena di NA e il seguente messaggio:

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) : 

Non sono sicuro di quello che sta succedendo, ma sembra big.matrix cerca di convertire tutti i miei testi in numeri nonostante type = "char". Come farlo funzionare?

risposta

6

Questo è un termine improprio: gli oggetti big.matrix memorizzano solo tipi di dati numerici. Il tipo "char" è un tipo di dati C++ utilizzato per memorizzare valori interi che rappresentano i codici carattere ASCII (un singolo carattere, non una stringa di caratteri). Per memorizzare stringhe di caratteri in una big.matrix, dovrai ricodificare le stringhe come valori numerici (o convertirli in fattori, quindi in valori numerici).

Se è necessario memorizzare i dati dei caratteri in un set di dati molto grande, è possibile esaminare il pacchetto "ff". Nella mia esperienza ha una curva di apprendimento ripida e la documentazione è in qualche modo carente, ma ha quella funzionalità.

Per ulteriori dettagli sulla gestione di grandi insiemi di dati, è possibile controllare il CRAN Task vista qui: http://cran.r-project.org/web/views/HighPerformanceComputing.html

+0

grazie mille. Ora ho capito. – user1890450