r - 用于显示和更新 data.table 的 gwidgets 或 View 的替代方案

标签 r data.table gwidgets

我正在尝试显示一个大的 data.table,但我陷入了 gWidgetsRGtk2gtable 的缓慢之间> 以及从基础查看View 的不灵活性。作为一个例子,我可以有

ex<-data.table(AA=runif(50000,-10,10),
               BB=runif(50000,-10,10),
               CC=runif(50000,-10,10),
               DD=runif(50000,-10,10),
               EE=runif(50000,-10,10),
               FF=runif(50000,-10,10),
               GG=runif(50000,-10,10),
               HH=runif(50000,-10,10),
               II=runif(50000,-10,10),
               JJ=runif(50000,-10,10),
               KK=runif(50000,-10,10),
               LL=runif(50000,-10,10),
               MM=runif(50000,-10,10))

当我执行View(ex)时,需要一秒钟的时间来填充。如果我这样做

gwin<-gwindow(title="example")
gtab<-gtable(ex,container=gwin)

需要 59 秒。

View 窗口的问题是,如果我的脚本需要更新它,用户必须手动关闭该窗口,并且必须重新打开一个新窗口。我对 gWidgets gtable 的问题是,在我的实际脚本中,输出约为一百万行(给定或接受),这通常会导致 R 在结果填充之前崩溃,并且总是花费比可接受的时间更长的时间。

我不需要或不希望用户能够通过显示编辑基础表。实际上,View 显示的内容就是我所需要的,除非基础表发生更改,我希望能够更改窗口,而不是被迫关闭旧窗口并打开新窗口。

我看到这个问题Programmatically close the window created by `View(x)`这意味着无法更新 View 窗口。

我在同一个问题中看到有人引用了plotrix包,但我不想要任何绘图,我只想要它似乎不做的表格。

是否有另一个软件包可以为我提供 View 的速度,并能够在显示后以编程方式更改窗口?

最佳答案

尝试 gdfedit。它是 RGtk2Extras 上 dfedit 的简单前端。否则,Rgtk2 中有一个模型可以使这变得足够简单。这是一个相当简单的示例:

df <- data.frame(x=rnorm(1e5), y = rnorm(1e5))

library(RGtk2)
model <- rGtkDataFrame(df)
view <- gtkTreeView(model)
mapply(view$insertColumnWithAttributes,  -1, colnames(model), 
       list(gtkCellRendererText()), 
       text = seq_len(ncol(model)) - 1)

sw <- gtkScrolledWindow()
sw$add(view)

win <- gtkWindow(show=FALSE)
win$add(sw)
win$show()

这应该非常快地显示这个大小的数据集。我猜1e6也没有问题。我会让你尝试一下。此示例来自 ProgGUIinR 包,其中给出了Programming GUIs in R一书中的代码。不是塞满这本书,而是给你一个地方来寻找一些其他可以做的事情。

尽管可以通过 model 访问模型本身 ( [<- ),但这不会将 GUI 同步到数据框。这些变化都会得到反射(reflect)。

关于r - 用于显示和更新 data.table 的 gwidgets 或 View 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16944934/

相关文章:

r - data.tables 的 Shiny react 失败

r - 迄今在R中添加1个工作日

windows - 安装新版本的 data.table(特别是 Rforge 的 1.8.11)

r - 如何根据管道中的汇总值对 geom_col 列进行排序

r - 为什么 data.tables mutate(row_number()) 失败?

linux - 是否可以将 GUI 与 littler 一起使用?

r - 为什么我的用于过滤数据的 R 代码会产生不同的结果 "fread()"和 "ffdf()"?

r - 如何创建均值和标准差data.table中的列

r - gwidgets glabel 在 R 中使用什么标记?

r - 通过 knitr、gWidgetsWWW 使用时出现 data.table 错误