我需要创建一个包含 0 和 1(大约 500K 行和 20K 列)的大文件,为此我使用了 R 中的 bigmemory 包。
现在因为这对我来说是新的,我还没有设法完全找到我的查询的答案。
big1 = big.matrix(nrow=nrow(mm),ncol=nrow(cod),init=0,type="char",dimnames = list(as.character(mm$id),cod$coding),backingfile = "big1.bin", descriptorfile = "big1.desc")
is.filebacked(big1) #TRUE
big2 = filebacked.big.matrix(nrow=nrow(mm),ncol=nrow(cod),init=0,type="char",dimnames = list(as.character(mm$id),cod$coding),backingfile = "big2.bin", descriptorfile = "big2.desc")
## presently the for loop step takes about 2 hours
for (i in 1:nrow(big1)){
big1[i, match(some_columns)] = 1
}
}
## eventually writing out the big.matrix to file using write.big.matrix also takes about 2 hours.
sessionInfo R 版本 3.3.0 平台:x86_64-pc-linux-gnu (64-bit) 运行于:Scientific Linux 6.9
这两者有什么区别?我想知道将 1 分配给 big1 或 big2 中的某些单元格时有什么区别?在这两种情况下初始化时,它们是否保存在支持和描述符文件中?还是必须做其他事情?
我保存了会话的 .RData (在第一个实例中使用 big1 而没有支持和描述符文件),然后在尝试将其加载到 R 时,它导致了一个致命错误并终止了会话。所以我想知道我可以在这里更有效地加载.RData,而不是每次都浪费几个小时来重做所有事情。
非常感谢。