运行此代码后:
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()
,但它没有解决我的问题。
答案 0 :(得分:0)
检查您的联接密钥的基数
c("year","month","MA","day")
在df.h
和daRta3
中都是唯一的吗? 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
如果可以保证c("year","month","MA","day")
中的顺序和值相同,那么简单的cbind
或bind_cols
可能是有效的解决方案