我有一个很大的时间序列数据集,我用xts来概括30秒的时间段.不知道如何使这个集合容易重现,但它看起来像这样
> str(taonedf)
'data.frame': 480 obs. of 2 variables:
$ time : POSIXct, format: "2013-01-06 13:00:29" "2013-01-06 13:00:59" "2013-01-06 13:01:29" ...
$ count: int 20763 12030 22188 12183 21112 11628 21543 12609 20095 12992 ...
> head(taonedf)
time count
1 2013-01-06 13:00:29 20763
2 2013-01-06 13:00:59 12030
3 2013-01-06 13:01:29 22188
4 2013-01-06 13:01:59 12183
5 2013-01-06 13:02:29 21112
6 2013-01-06 13:02:59 11628
Run Code Online (Sandbox Code Playgroud)
我绘制了一个正常的线图,它工作正常.
ggplot(data=taonedf, aes(x=time, y=count/30)) + #
geom_line(color="#009E73") +
scale_y_continuous(name="requests per second", labels = format_format(scientific=FALSE, big.mark=",")) +
scale_x_datetime(name="",labels …Run Code Online (Sandbox Code Playgroud) 我正在使用rmongodb来获取特定集合中的每个文档.它可以工作,但我正在使用数百万个小文档,可能是100M或更多.我正在使用网站上作者建议的方法:cnub.org/rmongodb.ashx
count <- mongo.count(mongo, ns, query)
cursor <- mongo.find(mongo, query)
name <- vector("character", count)
age <- vector("numeric", count)
i <- 1
while (mongo.cursor.next(cursor)) {
b <- mongo.cursor.value(cursor)
name[i] <- mongo.bson.value(b, "name")
age[i] <- mongo.bson.value(b, "age")
i <- i + 1
}
df <- as.data.frame(list(name=name, age=age))
Run Code Online (Sandbox Code Playgroud)
这适用于数百或数千个结果但是循环非常非常慢.有什么方法可以加快速度吗?也许是多处理的机会?任何建议,将不胜感激.我平均每小时1M,按照这个速度,我只需要一周时间来构建数据框.
编辑:我注意到while循环中的矢量越多,它就越慢.我现在正试图为每个向量分别循环.虽然看起来仍然像黑客,但必须有更好的方法.
编辑2:我对data.table运气不错.它仍在运行,但看起来它将在4小时内完成12M(这是我目前的测试设置),这是进步但远非理想
dt <- data.table(uri=rep("NA",count),
time=rep(0,count),
action=rep("NA",count),
bytes=rep(0,count),
dur=rep(0,count))
while (mongo.cursor.next(cursor)) {
b <- mongo.cursor.value(cursor)
set(dt, i, 1L, mongo.bson.value(b, "cache"))
set(dt, i, 2L, mongo.bson.value(b, "path"))
set(dt, i, 3L, mongo.bson.value(b, "time"))
set(dt, i, 4L, mongo.bson.value(b, …Run Code Online (Sandbox Code Playgroud) 我知道 ios-charts 不支持标签旋转。任何要求此功能的问题都会立即关闭,但这是一个非常基本的功能。我已经看到人们在 MPAndroidChart(这是基于它的)中发布有关如何执行此操作的帖子,但这些解决方案似乎是特定于 Android 的。有谁知道在 iOS 图表中为条形图获得 45 度或 90 度标签旋转的方法吗?