R语言中内存高效地将大型栅格栈转数据框并与另一数据框合并的技术求助
R语言中内存高效地将大型栅格栈转数据框并与另一数据框合并的技术求助
我现在碰到个超头疼的内存问题,想请教下R语言的大佬们:我要把一个包含4层的大型栅格栈转换成数据框,之后还要和一个只有40行的描述性数据框合并,要求描述数据框的40行能对应栅格数据框的每一个网格单元都重复一遍。但目前的方法内存占用太夸张了,连1000GB内存的HPC都直接崩了,有没有内存友好的实现方法呀?
之所以要做这个操作,是因为我需要把整合好的数据框喂给一个火蔓延预测模型(用的是firebehavioR包的rothermel()函数),得让模型对每一个处理组合和每一个网格单元都跑一次。就我目前的了解,这个模型只能接收数据框格式的输入,而且变量长度必须一致——比如来自描述数据集的植物生物量、含水量这类参数,长度不能比来自空间数据集的坡度、风速这类参数短。
我之前尝试的代码大概是这样的:
# 这是我的栅格栈 rs <- ... # 这里省略了栅格栈的具体创建代码 # 把栅格栈转成带坐标的 data frame,去掉NA值 raster_df <- as.data.frame(rs, xy = TRUE, na.rm = TRUE) # 将描述性数据框重复,重复次数等于栅格数据框的行数 descriptor_rep <- descriptor_df[rep(seq_len(nrow(descriptor_df)), nrow(raster_df)), ] # 合并两个数据框 combined_df <- cbind(raster_df, descriptor_rep)
结果这套流程一跑就直接爆内存,完全顶不住...有没有什么更高效的办法能解决这个问题呀?
备注:内容来源于stack exchange,提问作者Sarah
相关产品推荐
相关产品推荐

