为什么是plyr';s join_all函数导致r崩溃?
我想使用plyr的join_all函数连接多个数据帧。我的数据帧由三列组成,每列都有相同数量的行。当我运行代码时,r无法完成它的工作;整个电脑都慢了,我不得不重新启动它 以下是我使用的代码:为什么是plyr';s join_all函数导致r崩溃?,r,plyr,R,Plyr,我想使用plyr的join_all函数连接多个数据帧。我的数据帧由三列组成,每列都有相同数量的行。当我运行代码时,r无法完成它的工作;整个电脑都慢了,我不得不重新启动它 以下是我使用的代码: library(plyr) merge_corp_inv_count_noavg <- join_all(list(canada,china,france,germany,india,italy,japan,russia,saudiarabia,
library(plyr)
merge_corp_inv_count_noavg <- join_all(list(canada,china,france,germany,india,italy,japan,russia,saudiarabia,
spain,turkey,unitedkingdom,unitedstates),
by = c("date", "target_nation"), type='left')
也许这些与plyr的功能有冲突
我非常害怕再次运行该代码,因为它浪费了我大约30分钟的时间;所以,如果你或多或少有把握,请提供答案。谢谢。如果事情发生得更早,突然崩溃,最好检查数据集。使用join时,某些数据集的键列可能存在重复项,这可能会触发笛卡尔连接而不是
left
join,从而造成内存问题
使用
tidyverse
的选项如下
library(dplyr)
library(purrr)
list(canada, china, france, germany, india, italy, japan, russia, saudiarabia,
spain, turkey, unitedkingdom, unitedstates) %>%
reduce(left_join, by = c("date", "target_nation"))
在列表之前我需要任何函数吗?@KenLee我怀疑问题是因为一些新数据集中的“日期”和“目标国家”重复,这会创建笛卡尔连接,可能会破坏内存。您可以检查这些数据集中每个列的计数,即
list(加拿大、中国、法国、德国、印度、意大利、日本、俄罗斯、沙特、西班牙、土耳其、英国、美国)%%>%地图(~count(.x,日期,目标国家))
@KenLee这很可能是问题,当您的初始数据集为6k大小时,200万行非常大。您是对的——数据帧是相同的。我们将尝试找出原因。谢谢!我们可以关闭线程。我如何奖励您?
library(dplyr)
library(purrr)
list(canada, china, france, germany, india, italy, japan, russia, saudiarabia,
spain, turkey, unitedkingdom, unitedstates) %>%
reduce(left_join, by = c("date", "target_nation"))