2012-12-10 12 views
5

Próbuję użyć pakietu bigmemory w R i utknąłem na samym początku. Mam:R :: bigmemory - jak stworzyć postać big.matrix?

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

i otrzymam matrycę znaków. W porządku. Ale potem spróbować:

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

i uzyskać pełną matrycę Na i następujący komunikat:

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

Nie jestem pewien, co się dzieje, ale wygląda big.matrix próbuje przekonwertować wszystkie moje teksty w liczbach pomimo type = "char". Jak to działa?

Odpowiedz

6

Jest to trochę niepoprawna nazwa - obiekty big.matrix przechowują tylko dane liczbowe. Typ "char" to typ danych C++ służący do przechowywania wartości całkowitych reprezentujących kody znaków ASCII (pojedynczy znak, a nie ciąg znaków). Aby przechowywać ciągi znaków w big.matrix, będziesz musiał ponownie zakodować łańcuchy jako wartości liczbowe (lub przekonwertować na czynniki, a następnie na wartości numeryczne).

Jeśli chcesz przechowywać dane znakowe w bardzo dużym zbiorze danych, możesz zajrzeć do pakietu "ff". Z mojego doświadczenia wynika, że ​​ma on stromą krzywą uczenia się i brakuje w niej dokumentacji, ale ma tę funkcję.

Więcej szczegółów na temat radzenia sobie z dużymi zbiorami danych, można zapoznać się z CRAN Task Zobacz tutaj: http://cran.r-project.org/web/views/HighPerformanceComputing.html

+0

Dziękuję bardzo. Teraz rozumiem. – user1890450