我尝试在 R 中使用bigmemory
包,我一开始就陷入困境。我这样做:
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) :
我不确定发生了什么,但它看起来很大。尽管type = "char"
,矩阵试图将我的所有文本转换为数字。如何使它工作?
答案 0 :(得分:6)
这有点用词不当 - big.matrix对象只存储数字数据类型。 'char'类型是一种C ++数据类型,用于存储表示ASCII字符代码的整数值(单个字符,而不是字符串)。要在big.matrix中存储字符串,您必须将字符串重新编码为数值(或转换为因子,然后转换为数值)。
如果您需要将字符数据存储在一个非常大的数据集中,您可能需要查看'ff'包。根据我的经验,它有一个陡峭的学习曲线,文档有点缺乏,但它确实具有这种功能。
有关处理大型数据集的更多详细信息,您可以在此处查看CRAN任务视图:http://cran.r-project.org/web/views/HighPerformanceComputing.html