加速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]