【问题标题】:gwidgets gtable refresh小部件 gtable 刷新
【发布时间】:2011-07-03 19:15:30
【问题描述】:

我遇到以下问题:

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

使徒

【问题讨论】:

  • 对上面的评论感到困惑。它肯定“看起来”像一个 [r] 问题
  • @meteorainer,这是一个 R 问题。 gWidgets 是一个 R 包 (cran.r-project.org/web/packages/gWidgets/index.html)。我认为用户不应该得到-1。其实他提供了一个完整的可复现的例子,赞一个!

标签: r gwidgets


【解决方案1】:

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

#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 问题。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 想举个例子吗?我从来没有使用过这个包,很想尝试一下。
    【解决方案3】:

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

    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)
    

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 2020-11-28
      • 2021-11-18
      • 2021-01-10
      • 2011-06-06
      • 1970-01-01
      • 1970-01-01
      • 2021-04-18
      相关资源
      最近更新 更多