全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1668 2
2020-08-08
假设根据emp1(data.frame)生成emp2(data.frame),现已有emp1(包含字符串、时间类型),且创建仅有一行全为0的emp2,
使用while循环,根据emp1中符合条件的行不断生成emp2的行,最终得到完整的emp2。
但当数据量过大时,如emp1超过百万行,数据处理速度会非常的慢,数小时才能完成循环。有什么方法可以使速度更快?
之前考虑使用parallel包中的parLapply函数来进行多线程处理,但好像不支持data.frame类型的输入,当输入parLapply(cl,emp1,function_name)后,会出现Error in checkForRemoteErrors(val) :   2 nodes produced errors; first error: 参数长度为零
的错误。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2020-8-8 21:10:34
感觉你说的操作可能是filter,应该不需要循环,对大样本量数据循环本身是最耗费资源的,尽量不用。
另外你说的一行行添加的方法,更是不断地增大R内存分配,会极大消耗内存,实在要用循环的话,至少要加一条清理内存的代码。
如果用并行的方法,可以换个其他包实现。
还有一种方法,把循环部分的代码用c代码实现,也能提高处理速度
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-9-5 09:50:51
1. install.packages("data.table")
2. 使用Microsoft R Open 会自动并行运算
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群