当数据更改时,ggvis 中的 linked_brush 无法在 Shiny 中工作

2024-04-23

我想创建一个闪亮的应用程序,它使用 ggvis 绘制交互式图形,并使用 linked_brush 选择图形中的点。绘图数据根据输入而变化。

但是当我尝试将所有内容放在一起时,我收到一条错误消息。

Error : Length of calculated column 'reactive_185425318' (0)
is not equal to 1 or the number of rows in data (32).

我尝试通过 ggvis 中的“基本”演示创建一个最小示例:

ui.R

library(ggvis)

shinyUI(pageWithSidebar(
  div(),
  sidebarPanel(
    textInput('filter', 'Filters', ''),
    uiOutput("plot_ui")
  ),
  mainPanel(
    ggvisOutput("plot")
  )
))

server.R

library(ggvis)
library(dplyr)

shinyServer(function(input, output, session) {
  # A reactive subset of mtcars
  mtc <- reactive({ 
        mtcs <- mtcars %>% 
            mutate(name = row.names(.))
        if (nchar(input$filter) > 0)
        {
            mtcs <- mtcs %>% filter(grepl(input$filter, name))
        }
        print(mtcs)
        mtcs
    })
  lb <- linked_brush(keys = mtc()$id, "red")
  mtc %>%
    ggvis(~wt, ~mpg) %>%
    layer_points(fill := lb$fill, fill.brush := 'red') %>%
    lb$input() %>%
    bind_shiny("plot", "plot_ui")
  })

如果我改变

layer_points(fill := lb$fill, fill.brush := 'red') %>%

into

layer_points() %>%

一切都对我有用。我猜这个问题与“linked_brush”有关。

我应该如何解决这个问题?感谢您的任何建议。

我的会话信息:

sessionInfo()
R version 3.1.1 (2014-07-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)

locale:
[1] LC_COLLATE=English_Australia.1252  LC_CTYPE=English_Australia.1252    LC_MONETARY=English_Australia.1252 LC_NUMERIC=C                       LC_TIME=English_Australia.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] stringr_0.6.2       magrittr_1.5        dplyr_0.4.1.9000    rproject_0.1.0.4509 ggvis_0.4.0.9000    shiny_0.11.1       

loaded via a namespace (and not attached):
 [1] assertthat_0.1.0.99  DBI_0.3.1            digest_0.6.4         htmltools_0.2.6      httpuv_1.3.2         lazyeval_0.1.10.9000 mime_0.2             parallel_3.1.1       R6_2.0.1            
[10] Rcpp_0.11.3          RJSONIO_1.3-0        tools_3.1.1          xtable_1.7-4        

我有同样的问题。通过修改解决了linked_brush()包括设置按键的功能。

修改的linked_brush()来自ggvis中的linked_brush.R:

linked_brush <- function(keys, fill = "red") {
  stopifnot(is.character(fill), length(fill) == 1)

  rv <- shiny::reactiveValues(under_brush = character(), keys = character())
  rv$keys <- isolate(keys)

  input <- function(vis) {
    handle_brush(vis, fill = fill, on_move = function(items, ...) {
      rv$under_brush <- items$key__
    })
  }

  set_keys <- function(keys) {
    rv$keys <- keys
  }

  set_brush <- function(ids) {
    rv$under_brush <- ids
  }

  selected_r <- reactive(rv$keys %in% rv$under_brush)
  fill_r <- reactive(c("black", fill)[selected_r() + 1])

  list(
    input = input,
    selected = create_broker(selected_r),
    fill = create_broker(fill_r),
    set_keys = set_keys,
    set_brush = set_brush
  )
}

现在可以修改示例中的 server.R 以设置密钥mtcs变化:

library(ggvis)
library(dplyr)

shinyServer(function(input, output, session) {
  lb <- linked_brush(keys = NULL, "red")
  # A reactive subset of mtcars
  mtc <- reactive({ 
        mtcs <- mtcars %>% 
            mutate(name = row.names(.))
        if (nchar(input$filter) > 0)
        {
            mtcs <- mtcs %>% filter(grepl(input$filter, name))
        }
        print(mtcs)
        lb$set_keys(seq_len(nrow(mtcs)))
        mtcs
    })
  mtc %>%
    ggvis(~wt, ~mpg) %>%
    layer_points(fill := lb$fill, fill.brush := 'red') %>%
    lb$input() %>%
    bind_shiny("plot", "plot_ui")
  })
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当数据更改时,ggvis 中的 linked_brush 无法在 Shiny 中工作 的相关文章

  • R:如何找到向量的模式[重复]

    这个问题在这里已经有答案了 下面是我的data frame我想知道每个内存类别 1 到 8 的模式是什么 gt dput d structure list MEMORY1 c 5 5 7 1 5 6 4 5 4 5 5 4 1 5 5 2
  • 改进R中从google获取股票新闻数据的功能

    我已经编写了一个函数来从 Google 获取和解析给定股票代码的新闻数据 但我确信有一些方法可以改进它 对于初学者来说 我的函数返回一个 GMT 时区的对象 而不是用户当前的时区 如果传递的数字大于 299 它就会失败 可能是因为 goog
  • 如何使用autoconf重新生成配置文件?

    我使用 autoconf 重新生成配置文件 它有效 但是当我执行生成的配置文件时 configure 有一些错误消息 例如 configure line 3713 syntax error near unexpected token bla
  • 如何在基数 R 中进行分组

    我想使用以下 SQL 查询来表达base R 没有任何特定的包 select month day count as count avg dep delay as avg delay from flights group by month d
  • R:ifelse 中的字符串列表

    我正在寻找与 MySQL 中的 where var in 语句类似的东西 我的代码如下 data lt data frame id 10001 10030 cc1 rep c a b c 10 attach data data new lt
  • 根据 R 数据框中的名称对列进行平均

    我想知道是否有一种有效的方法来获取每组的平均值类似命名的列谁的名字结尾为 1S and 2S ex ex1S ex2S at time 1并取每组的平均值类似命名的列谁的名字结尾为 1C or 2C ex ex1C ex2C at time
  • 如何将服务器端 Shiny 应用程序嵌入到 JSP 页面中而不将该应用程序暴露在其他地方

    我有一个闪亮的应用程序 我想将其嵌入到托管在 Amazon AWS 上的 Java 8 Web 服务器的页面中 注意 我说 嵌入 是因为网络服务器中的大多数页面共享一个公共侧边栏和页脚 这会自动应用于大多数视图 这样 jsp 文件只需为页面
  • R 错误:无法更改锁定绑定的值

    我试图估计无限数字流的平均值和标准差 当我运行代码时 出现错误消息 无法更改锁定绑定的值 我做了一些研究 发现这个错误与我使用全局变量有关 但我无法弄清楚 任何帮助将非常感激 在此先感谢您的帮助 define global variable
  • 如何总结此R问题中的销售数量、售出酒类数量和花费金额

    我使用以下代码在 R 上上传我的数据 if file exists ames liquor rds url lt https github com ds202 at ISU materials blob master 03 tidyvers
  • 在 R 中使用逻辑 grep 抓取文本

    下午好 谢谢你帮我解答这个问题 我有兴趣抓取一组超过 5000 个 URL 的列表 我使用 lapply 和 readLines 使用下面的示例代码提取这些网页的文本 multipleURL lt c http dailymed nlm n
  • 函数“[<-”将_替换_一个元素,但不会追加_元素_

    我在使用时注意到以下几点 lt 我成功于替换元素但不位于追加向量的一个元素 例子 VarX lt integer VarX 1 lt 11 lt VarX 2 22 VarX 1 11 Expected the value of VarX
  • 在 Lavaan 生长曲线模型中提取个体轨迹

    我已经使用 R 的 Lavaan 包中的 Growth 函数成功地对一项研究的纵向数据进行了建模 我找不到任何关于如何提取每个参与者的预测轨迹的记录 我只能找到整个组的预测轨迹 在摘要输出的 拦截 部分下给出 使用 lavPredict m
  • R 多元一步预测和准确性

    我想使用 R 来比较两个预测模型的 RMSE 均方根误差 第一个模型使用 1966 年至 2000 年的估计值来预测 2001 年 然后使用 1966 年至 2001 年的估计值来预测 2002 年 依此类推直至 2015 年 第二个模型使
  • 使用 ggplot 构面时增加闪亮的绘图大小

    有没有办法增加绘图窗口的大小shiny取决于在一个中使用的面的数量ggplot图 也许使用垂直滚动 例如 使用下面的示例 当输入为 A 有三个方面 情节看起来不错 当选项 B 选择绘图数量会增加 但绘图窗口保持相同大小 导致绘图太小 是否有
  • R 中的龙卷风图

    我正在尝试在 R 中绘制龙卷风图 又名敏感性图 目标是可视化某些变量增加 10 和减少 10 的效果 到目前为止我已经得到这个结果 这是我正在使用的代码 Tornado plot data lt matrix c 0 02 0 02 0 0
  • 如何绘制每条线之间具有特定距离的图形

    实际上 我尝试绘制一个图形 但它将所有列 线 放在一起并显示 因此它不具有代表性 我尝试制作模拟数据并向您展示我如何绘制它 并向您展示我想要的内容 我不知道如何制作像下面所示的示例的数据 但我在这里做了什么 set seed 1 M lt
  • 在 igraph 中为社区分配颜色

    我在 igraph 中使用 fastgreedy community 检测算法在 R 中生成社区 代码返回 12 个社区 但是在绘图时很难识别它们 因为它返回的图的颜色数量有限 我怎样才能用十二种不同的颜色绘制这个图表 l2 lt layo
  • 手动设置scale_fill_distiller()的比例

    我正在尝试制作一系列图表进行比较 举例来说 我想使用iris数据集来制作这样的图 其中我已过滤以仅查看 setosa 物种 library ggplot2 library dplyr iris gt filter Species setos
  • 如何自动启动我的 ec2 实例、运行命令然后将其关闭?

    我想每周对 redshift postgres 数据库中的数据运行一次机器学习模型 我使用以下命令将 R 脚本设置为休息 apiplumbr然后我将其设置为一项任务来管理pm2 我有它 所以任务会在ec2实例启动然后继续运行 要让 R 脚本
  • 计算互相关函数?

    In R 我在用ccf or acf计算成对互相关函数 以便我可以找出哪个移位给我带来最大值 从它的外观来看 R给我一个标准化的值序列 Python 的 scipy 中是否有类似的东西 或者我应该使用fft模块 目前 我正在这样做 xcor

随机推荐

  • 使用 bootstrap 更改表标题颜色

    我有一个使用引导程序的 MVC5 应用程序 表列名称为黑色 在白色背景上 我想将其更改为蓝色背景和列 名字将是白色的 我该怎么做 我尝试使用 CSS 类但没有成功
  • 安装 rpy2 时 Visual Studio cl.exe 错误

    我在 Django 中安装 rpy2 并收到以下错误 C Program Files x86 Microsoft Visual Studio 2017 Enterprise VC Tools MSVC 14 15 26726 bin Hos
  • Django 是否有立即 http 响应的异常?

    Django Tastypie 有ImmediateHttpResponse允许立即向客户端返回响应的异常 raise ImmediateHttpResponse response a message 姜戈有Http404 https do
  • 如何读取长度未知的输入字符串?

    如果我不知道这个词有多长 我就无法写char m 6 这个词的长度可能有十到二十长 我该如何使用scanf从键盘获取输入 include
  • Postgres 物化路径 - 使用 ltree 有什么好处?

    物化路径是一种在 SQL 中表示层次结构的方法 每个节点包含路径本身及其所有祖先 grandparent parent self The django treebeard实施MP docs https django treebeard re
  • 如何在 angularjs 单元测试中触发 keyup/keydown 事件?

    我想对模拟占位符的指令进行单元测试 其中输入值仅在 keyup down 事件上清除 您需要以编程方式创建一个事件并触发它 为此 使用 jQuery 进行单元测试是非常有用的 例如 您可以编写一个像这样的简单实用程序 var trigger
  • Drive Rest API V3 中的断点续传上传

    我正在尝试使用 Android 中的 Drive Rest API 创建可恢复上传会话 根据文档 需要遵循的 3 个步骤是 启动可恢复会话 保存可恢复会话 URI 上传文件 第 1 步 我使用以下代码来启动可恢复会话 File body n
  • 如何获取十六进制02的STX字符

    我有一个设备试图通过套接字连接 根据手册 我需要 十六进制 02 的 STX 字符 我如何使用 C 来做到这一点 只是对 GeoffM 的答案的评论 我没有足够的观点来以正确的方式发表评论 您绝对不应该仅使用两位数字来嵌入 STX 或其他字
  • windows 7下如何强制删除硬盘上的文件

    我有一个硬盘 但里面有一个坏文件 当我想删除文件时 窗口说 您指定的文件名无效或太长 指定不同的文件名 但文件没有重命名 我该怎么办 当正在运行的进程拥有资源句柄时 您无法修改该资源 解决方案是结束所有拥有您的资源句柄的进程 如下所示 1
  • Ant Design Collapse - 关闭按钮

    我是 Ant Design 的初学者 在使用 Ant Design 库中的 Collapse 和 Form 时遇到了这个问题 我已经设置了我的页面 其中添加新项目的表单位于折叠中 并且折叠下方有一个项目列表
  • 在ios中使用Google Plus进行图像共享

    我想在 google plus 上分享图片 我使用过 google api AppDelegate m GPPSignIn sharedInstance clientID MyClientID GPPDeepLink setDelegate
  • 重命名access vba中的字段

    我需要重命名 VBA 访问代码中的字段名称以实现自动化 以便运行得更快 我正在使用一个按钮来移动一些数据 因此需要更改列名称来清理数据 我正在使用表格 但我需要更改的表格根本没有链接到表格 我尝试使用一些 VBA 代码 但不断收到变量未定义
  • 需要在Windows Phone 7屏幕上显示大量文字

    我想要在屏幕上显示大约 800 KB 的文本 有人可以让我知道这个问题的可能解决方案吗 由于文本块的 2048X2048 限制 我已经尝试将文本拆分为多个文本块 并且也尝试过http blogs msdn com b priozersk a
  • 在 FFI 中使用 ptr::NonNull 是否有效?

    铁锈具有ptr NonNull https doc rust lang org beta std ptr struct NonNull html代表非的类型NULL指针 在 FFI 中使用这种类型安全吗 是否保证具有相同的二进制表示形式 忽
  • 捕获文件似乎在数据包中间被缩短 - 如何防止此错误?

    在我的应用程序中 我打开 Tshark 进程并开始捕获 当我想完成捕获时 我会终止 Tshark 进程 因此有时捕获文件已损坏 当我尝试打开此文件时 我收到错误捕获文件似乎在数据包中间被剪短 如何防止此错误有没有更好的方法来关闭 Tshar
  • 来自 .meta .info .data 的 Tensorflow 冻结推理图并组合冻结推理图

    我是张量流新手 目前正在努力解决一些问题 如何在没有管道配置的情况下从 meta data info 获取冻结推理图 我想实时检查预先训练的交通标志检测模型 模型包含 3 个文件 meta data info 但我找不到信息 如何在没有管道
  • 为什么在 Pandas 中使用 apply 时会出现额外的索引

    当我使用apply对于 Pandas 中的用户定义函数 看起来 python 正在创建一个附加数组 我怎样才能摆脱它呢 这是我的代码 def fnc group x group C values out x np where x lt 0
  • 带计数的 EF Core 左连接

    我在 MySql 数据库上有 3 个表 我想在这 3 个表之间进行左连接并使用 group by 进行计数 城市表 Id Name 学校桌 Id CityId Name 学生桌 Id SchoolId Name MySql raw quer
  • 如何在 Azure DevOps 中启用 Docker 层缓存

    我正在运行下面的 yaml 脚本来构建 docker 映像并推送到 kubernetes 集群 但同时我想在构建 yaml 脚本时在 azure DevOps 中启用 docker 层缓存 您能否解释一下如何启用或如何添加azure dev
  • 当数据更改时,ggvis 中的 linked_brush 无法在 Shiny 中工作

    我想创建一个闪亮的应用程序 它使用 ggvis 绘制交互式图形 并使用 linked brush 选择图形中的点 绘图数据根据输入而变化 但是当我尝试将所有内容放在一起时 我收到一条错误消息 Error Length of calculat