8

我遇到以下问题:

library(gWidgets)
options(guiToolkit = "RGtk2")

aa <- c(1,2,3)
bb <- c(4,5,6)
cc <- cbind(aa,bb)
cc <-as.data.frame(cc)

t1 <- gtable(cc, container=TRUE)

我想刷新 t1 的内容:

dd <- c(7,8,9)
dd <- as.data.frame(dd)

但是当我跑步时

t1[] <- dd

我收到:Can't replace with fewer columns

阿波斯托洛斯

4

3 回答 3

3

为了扩展约翰的答案,这里有一个例子。

#Data
cc <- data.frame(aa = 1:3, bb = 4:6)
dd <- data.frame(X = 7:9)

#Wigdets
win <- gwindow()
grp <- ggroup(container = win)
t1 <- gtable(cc, container = grp)

#Refresh widget
delete(grp, t1)
t1 <- gtable(dd, container = grp)

请注意,问题中的示例代码在gWidgetstcltk; 这是一个纯粹的 GTK 问题。

于 2011-07-04T12:33:45.617 回答
2

gtk 小部件让您在构造时选择列的类型,因此 gtable 不会让您拥有更少的列或更改列类型。如果您真的想这样做,请将小部件放入 ggroup 容器中,然后删除并添加一个新小部件。

于 2011-07-03T19:57:26.403 回答
0

如果它只是关于刷新而不是完全改变它的内容,我用这样的东西做了非常好的体验:

win <- gtable(data.frame(a=rnorm(100),b=runif(100)),container=T)
win[1,1] <- 5
win[1:10,2] <- 6
win[seq(dim(win)[1]),seq(dim(win)[2])] <- win[seq(dim(win)[1]),seq(dim(win)[2])] +1 

完整的“刷新”可能如下所示:

win <- gtable(data.frame(a=rnorm(100),b=runif(100),d=FALSE),container=T)
于 2013-06-23T14:53:04.660 回答