2012-12-10 50 views
5

我嘗試在R中使用bigmemory包,我一開始就卡住了。我這樣做:R :: bigmemory - 如何創建字符big.matrix?

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

並得到一個字符矩陣。沒關係。但後來我嘗試:

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

,我得到一個矩陣充分NA及以下消息:

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

我不知道發生了什麼事情,但它看起來big.matrix會嘗試把所有我的文本儘管type = "char",但數字。如何使它工作?

回答

6

這是一個誤稱 - big.matrix對象只存儲數字數據類型。 'char'類型是一種C++數據類型,用於存儲表示ASCII字符代碼(單個字符,而不是字符串)的整數值。要將字符串存儲在big.matrix中,必須將字符串重新編碼爲數值(或轉換爲因子,然後轉換爲數值)。

如果您需要將字符數據存儲在非常大的數據集中,您可能需要查看'ff'包。根據我的經驗,它有一個陡峭的學習曲線,文檔有點缺乏,但它確實有這種功能。

有關處理大型數據集的詳細信息,你可以看看這裏的CRAN任務視圖:http://cran.r-project.org/web/views/HighPerformanceComputing.html

+0

謝謝你這麼多。現在我懂了。 – user1890450