加速R计算的措施
我问这是一个关于加速R计算的措施,r,plyr,data.table,R,Plyr,Data.table,我问这是一个关于R的一般/初学者问题,而不是针对我使用的软件包 我有一个dataframe,有300万行和15列。我不认为这是一个巨大的数据框,但也许我错了。p> 我正在运行下面的脚本,它已经运行了2个多小时了——我想我一定能做些什么来加速它 代码: 这不是一个过度密集的脚本,或者说,我不认为它是 在数据库中,可以向表中添加索引以提高连接速度。在导入时,我应该做的R中是否有类似的操作,以使函数/包运行得更快?您的代码所做的似乎都是这样的: orders[order(orders$ClientID
R
的一般/初学者问题,而不是针对我使用的软件包
我有一个dataframe
,有300万行和15列。我不认为这是一个巨大的数据框,但也许我错了。p>
我正在运行下面的脚本,它已经运行了2个多小时了——我想我一定能做些什么来加速它
代码:
这不是一个过度密集的脚本,或者说,我不认为它是
在数据库中,可以向表中添加索引以提高连接速度。在导入时,我应该做的
R
中是否有类似的操作,以使函数/包运行得更快?您的代码所做的似乎都是这样的:
orders[order(orders$ClientID), ]
那会更快 在我看来,您可能想要:
orders$NumOrders <- with( orders( ave(OrderID , ClientID) , FUN=length) )
orders$NumOrders使用建议的数据。表
程序包,以下操作应在一秒钟内完成此工作:
orders[,list(NumOrders=length(OrderID)),by=ClientID]
查看包。@JoshuaUlrich data.table而不是dataframe?它们真的可以互换吗?谢谢你给我推荐数据。还有表。此操作将显著加快,并且在将数据.frame
转换为数据.table
后,可以运行相同的代码位<代码>命令只是为了解释,plyr由于其非常甜美的语法糖而非常受欢迎,但对于大型数据集来说,它的速度很慢,特别是当您的拆分变量中的组数很大时。花一些时间学习数据表;语法不是很好(IMHO),但通常会快很多个数量级。听起来像table(orders$ClientID)
可能也能满足您的需要。
orders[,list(NumOrders=length(OrderID)),by=ClientID]