错误:std :: bad_alloc Rstudio

时间:2016-07-25 14:22:27

标签: c++ r

运行此代码后:

t1 <-Sys.time()
df.m <- left_join(df.h,daRta3,by=c("year","month","MA","day"))
t2 <- Sys.time()
difftime(t2,t1)

我有这个错误。

  

错误:std :: bad_alloc

我尝试创建的矩阵的维度为74495*2695 = 180.10^6行。

我运行代码的计算机有20 GB的RAM

我尝试了memory.limit(),但它没有解决我的问题。

1 个答案:

答案 0 :(得分:0)

  1. 检查您的联接密钥的基数

    • c("year","month","MA","day")df.hdaRta3中都是唯一的吗?
    • 最常见的值是什么?
  2. NA值。 left_join可以将NA的值视为相等或不同:

    > tibble(x = c(NA, NA, NA)) %>% left_join(., ., by = 'x')
    # A tibble: 9 x 1
      x    
      <lgl>
    1 NA   
    2 NA   
    3 NA   
    4 NA   
    5 NA   
    6 NA   
    7 NA   
    8 NA   
    9 NA   
    > tibble(x = c(NA, NA, NA)) %>% left_join(., ., by = 'x', na_matches = 'never')
    # A tibble: 3 x 1
      x    
      <lgl>
    1 NA   
    2 NA   
    3 NA
    
  3. 如果可以保证c("year","month","MA","day")中的顺序和值相同,那么简单的cbindbind_cols可能是有效的解决方案