小编sho*_*aco的帖子

在R中安全地创建S3 Generics

Henrik Bengtsson为互联网提供了一种在R创建S3泛型的好方法,而不必担心它们是否在2002年之前创建过.

他的函数setGenericsS3的作用基本上是:

  • 检查名称是否正常
  • 检查是否存在具有该名称的功能

如果是这样,

  • 检查它是否是通用的
  • 如果不是,请将其重命名为.default并创建泛型

如果没有,只需创建通用.

事实证明,当您自己的软件包中没有可用的代码时,自动创建泛型非常有用.当我们走过这个R时代时,我想知道现在在R中实现相同的正确方法是什么.我isS3Generic()在R中找不到或类似的函数,Henrik Bengtsson的代码源自R 2.14中引入的强制命名空间.我记得我已经看到了实现同样目标的其他方法,但找不到它们.

编辑:我特意找S3.该功能isGeneric()仅适用于S4,例如anova(用于S3通用):

> isGeneric('anova')
[1] FALSE
> anova
function (object, ...) 
UseMethod("anova")
<bytecode: 0x04dc7a18>
<environment: namespace:stats>
Run Code Online (Sandbox Code Playgroud)

generics r r-s3

33
推荐指数
1
解决办法
974
查看次数

R/Shiny:调整窗口大小后丢弃的 Plotly 反应高度

从 Plotly 4.5.6 升级到 Plotly 4.6.0(或更高版本)后,在plot_ly. 这发生在窗口大小调整或 tabsetPanel 选择时。

先决条件

  • 情节高度通过选择 plot_ly(..., height=<some dependency>)
  • <some dependency>是一个反应值(input$height在下面的例子中)

问题

  • 调整窗口大小后,高度设置为 selectInput 的第一个值

例子

  • 当在 selectInput 中选择“800”时,该图以 800px 的高度正确绘制:

ex1

  • 调整窗口大小后,高度更改为selectInput(100px)的第一个值,即使此值根本没有更改:

ex2

如果tabsetPanel页面中有 ,也会发生同样的问题(例如在绘图下方)。单击不同的选项卡时,绘图高度会更改。

library(shiny)
library(plotly)


ui <-shinyUI(fluidPage(
       selectInput("height", "Choose desired height", choices=c(100,800)), 
       plotlyOutput("plot")))

server <- shinyServer(function(input,output, session){
  output$plot <- renderPlotly({
    plot_ly(mtcars, x=~gear, y=~cyl, height = input$height)
  })
})

shinyApp(ui,server)
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试过的

  1. 最初将height参数放入renderPlotly工作中,但由于 Plotly 本身从不改变其高度,因此绘图本身始终保持在 800px(只是容器高度发生了变化):

用户界面: uiOutput("plot")

服务器:

output$plot <- renderUI({ plotlyOutput("plotly", …
Run Code Online (Sandbox Code Playgroud)

r shiny plotly

5
推荐指数
1
解决办法
635
查看次数

如何使用闪亮的javascript函数?

我想使用闪亮的js函数将数据从javascript发送到R,但无法正常工作。我所做的是一个简单的示例,其中setinputValue将“ noone”发送给“ too” input $ too

这是代码:

library(shiny)


ui <- fluidPage(

  HTML("<script>
       $( document ).ready(function() {
       Shiny.setInputValue('too', 'noone');

       });</script>"),


      textOutput("table")


  )


server <- function(input, output) {
 output$table <- renderPrint(input$too)


}

 shinyApp(ui,server)
Run Code Online (Sandbox Code Playgroud)

我得到的js错误是:Shiny.setInputValue不是一个函数

javascript r shiny

5
推荐指数
1
解决办法
736
查看次数

单击相同的情节标记两次不会触发事件两次

event_data("plotly_click")用户单击散点图中的标记后,我正在使用Plotly的东西(打开模式)。之后(例如,关闭模态),event_data("plotly_click")当然不会改变,因此单击相同的标记不会再次触发相同的动作。

最小示例:

library(plotly)
ui <- fluidPage(  
  plotlyOutput("plot")
)
server <- function(input, output, session) {
  output$plot <- renderPlotly({
    mtcars %>% plot_ly(x=~disp, y=~cyl)
  }) 

  # Do stuff after clicking on a marker in the plot
  observeEvent(event_data("plotly_click"), {
    print("do some stuff now") # this is not executed after second click on same marker
  })  
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

我已经尝试了使用Shinyjs的变通办法onclick,但无济于事(它在绘图的空白区域工作良好,但在单击标记时无效):

shinyjs::onclick(id="plot", print("clicked"))
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用反应性值来存储最后的点击,然后立即将其重置(例如,通过event_data("plotly_hover")),但是所有尝试均会失败,因为它event_data("plotly_click")仍然保持其旧值。

有人可以帮忙吗?

r modal-dialog shiny plotly shinyjs

3
推荐指数
2
解决办法
803
查看次数

R闪亮的仪表图表

有人可以帮我在R Shiny中绘制一个仪表图吗?我不需要它是动态的,但要有一个我赋值的KPI,并显示当我运行app时它应该是红色从0到0.3,黄色0.3至0.5,绿色0.5至1.

r gauge shiny flexdashboard

3
推荐指数
2
解决办法
3368
查看次数

标签 统计

r ×5

shiny ×4

plotly ×2

flexdashboard ×1

gauge ×1

generics ×1

javascript ×1

modal-dialog ×1

r-s3 ×1

shinyjs ×1