您如何使用数字范围对data.table进行子集化,以便使用二进制搜索?
例如:
require(data.table)
set.seed(1)
x<-runif(10000000,min=0,max=10)
y<-runif(10000000,min=0,max=10)
DF<-data.frame(x,y)
DT<-data.table(x,y)
system.time(DFsub<-DF[DF$x>5 & DF$y<7,])
# user system elapsed
# 1.529 0.250 1.821
#subset DT
system.time(DTsub<-DT[x>5 & y<7])
# user system elapsed
#0.716 0.119 0.841
Run Code Online (Sandbox Code Playgroud)
以上不使用键(矢量扫描),加速不是那么戏剧化.使用二进制搜索对data.table的数值范围进行子集化的语法是什么?我在文档中找不到一个好例子; 如果有人可以使用上面的玩具数据提供一个例子,将会有所帮助.
编辑:这个问题是类似的,但仍然没有演示如何按范围子集: data.table:矢量扫描v二进制搜索与数字列 - 超慢setkey
我正在尝试给dplyr的连锁经营者.
使用简单的例子:
group_by(mtcars, cyl) %>%
summarise(mean(disp), mean(hp))
Run Code Online (Sandbox Code Playgroud)
我得到了结果:
# mean(disp) mean(hp)
#1 230.7219 146.6875
Run Code Online (Sandbox Code Playgroud)
由于某些原因,dplyr不进行分组,只是总结整个向量.我错过了什么?
我相信"rf"(randomForest)方法caret将默认树的数量设置为500.不幸的是,这会导致时间复杂度对于较大的数据集失去控制.有没有快速的方法来减少树的数量而不创建自定义方法?我知道rf唯一的可调参数是mtry.
只是为了澄清:我不打算调整树木的数量.我只想将它修复为较低的值,以便我可以在合理的时间内运行rf.
这是一个看似简单的问题,我要求的是为了更好地理解域特定语言在R中是如何工作的.
通用函数"+"如何允许构建分层图ggplot2?
显然ggplot2在非常高的抽象层次上工作.有人可以展示一个简单的例子,展示"+"如何在引擎盖下工作ggplot2?
是否可以从.Rdata对象或存储在磁盘上的任何其他大型数据对象中绘制引导样本?我目前从非常大的数据中采样的方法是构建一个本地MySQL数据库,然后使用SQL将随机样本绘制到R中.不幸的是,MySQL中的采样和排序根本没有效率.我想知道是否有人为此用例设计了更好的解决方案.
要了解我当前的解决方案,请参阅MySQL中的采样问题: 来自Sql数据库的简单随机样本