我正在尝试使用该data.table程序包在R 64位上加载大型CSV文件(226M行乘38列).磁盘上文件的大小约为27Gb.我在具有64GB RAM的服务器上执行此操作.我关闭了大部分其他内容并启动了一个全新的R/Rstudio会话,所以当我启动时,fread只使用了2Gb的内存.随着读取过程,我看到内存使用量攀升到大约45.6 Gb,然后我感到害怕Error: cannot allocate vector of size 1.7 Gb.但是,仍有超过18Gb可用.是否有可能在18Gb的RAM中没有一个连续的1.7Gb块?它是否与承诺的大小有关(我承认不完全理解),如果是这样,有没有办法最小化承诺的大小,以便留下足够的空间
该列表包括我想要汇总的一组用户的历史记录,并随着时间的推移汇总某些统计信息.我已经能够使用selectin 导入38列的子集fread,所以我不会完全丢失,但它确实意味着我需要使用其他变量,我需要选择,并且可能最终会遇到同样的错误.
对于我的设置,有没有其他方法可以将整个数据集放入内存,或者我是否需要继续只导入子集或移动到大数据友好平台?
谢谢.
R version 3.3.0 Patched (2016-05-11 r70599)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows Server >= 2012 x64 (build 9200)
locale:
[1] LC_COLLATE=English_United States.1252 LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252 LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] data.table_1.9.6
loaded via a …Run Code Online (Sandbox Code Playgroud) 我希望在包加载时定义一组颜色,并在包分离时清除.
我提出的似乎有用的内容显示在以下玩具示例中,该示例依赖于深度分配(我知道这是邪恶的)
.onLoad <- function(libname, pkgname) {
}
.registerColors <- function(){
C.1 <<- c("#FF0000FF", "#80FF00FF", "#00FFFFFF", "#8000FFFF")
C.2 <<- c("#00AAFFFF", "#0000FFFF", "#AA00FFFF", "#FF00AAFF")
}
.onUnload <- function(libpath){
}
.onAttach <- function(libname, pkgname) {
.registerColors()
packageStartupMessage("Welcome to XYZ")
}
.onDetach <- function(libname, pkgname) {
rm(C.1, C.2, pos = 1)
packageStartupMessage("Buh-bye")
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,情节(seq(1:4,col = C.1)有效.是否有更好或更优雅或更少潜在破坏性的方式来实现它?
如果我要使用嵌套括号计算多项式,那么单独声明每个常量并将它们声明为数组之间是否存在差异?
例如,两者之间是否存在差异
real(kind = c_double), parameter :: &
P0 = .5, &
P1 = .8, &
P2 = -.1, &
P3 = -.7, &
P4 = -.4, &
P5 = -.6, &
P6 = -.2
Run Code Online (Sandbox Code Playgroud)
并计算
x = ((((((P6 * a + P5) * a + P4) * a + P3) * a + P2) * a + P1) * a + P0)
Run Code Online (Sandbox Code Playgroud)
要么
real(kind = c_double), parameter, dimension(7) :: P = &
[.5, .8, -.1, -.7, -.4, -.6, -.2] …Run Code Online (Sandbox Code Playgroud)