楼主: sosocloud10
1708 2

[问答] R语言,如何提高对数据框的处理速度 [推广有奖]

  • 0关注
  • 0粉丝

大专生

11%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
146 点
帖子
11
精华
0
在线时间
54 小时
注册时间
2020-7-27
最后登录
2021-7-12

楼主
sosocloud10 发表于 2020-8-8 00:00:42 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
假设根据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: 参数长度为零
的错误。


二维码

扫码加我 拉你入群

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

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

关键词:如何提高 数据框 R语言 function Parallel R语言、数据处理、数据框、dataframe、while循环

沙发
llb_321 在职认证  发表于 2020-8-8 21:10:34
感觉你说的操作可能是filter,应该不需要循环,对大样本量数据循环本身是最耗费资源的,尽量不用。
另外你说的一行行添加的方法,更是不断地增大R内存分配,会极大消耗内存,实在要用循环的话,至少要加一条清理内存的代码。
如果用并行的方法,可以换个其他包实现。
还有一种方法,把循环部分的代码用c代码实现,也能提高处理速度
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 热心帮助其他会员

总评分: 论坛币 + 10   查看全部评分

藤椅
tiesuoqiao 发表于 2020-9-5 09:50:51
1. install.packages("data.table")
2. 使用Microsoft R Open 会自动并行运算

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 12:49