小编Rad*_*uba的帖子

R编程:使用先前计算的行来更新每一行

我有一个非常大的时间序列,我需要根据开头的某个任意值创建一个不同的时间序列,并在当前时间段内进行更改.在真实数据集中,此更改取决于数据框的其他变量,但出于MWE的目的,我按如下方式重新创建它:

initial_value <- 100
set.seed(123)
library(data.table)
df <- as.data.table(data.frame(num = c(1:10),change = rnorm(10)))
Run Code Online (Sandbox Code Playgroud)

新变量value定义为上一期间的自身值加上change当前期间的值.第一次观察中的值由任意选择确定initial_value.如果没有限制value,可以简单地创建

df <- df[, value0 := initial_value + cumsum(change)]
Run Code Online (Sandbox Code Playgroud)

这是非常快速的使用data.table.然而,遗憾的是,change也可能取决于前一时期的实际value情况.具体来说,假设每当它达到102时,系列需要到达initial_value下一个时段并在那里停留3个时段.因此,在以下数据框架中,我需要value在上面生成的代码中创建变量value0:

    num      change    value0     value
 1:   1 -0.56047565  99.43952  99.43952
 2:   2 -0.23017749  99.20935  99.20935
 3:   3  1.55870831 100.76806 100.76806
 4:   4  0.07050839 100.83856 100.83856
 5:   5  0.12928774 100.96785 100.96785
 6:   6  1.71506499 102.68292 102.68292
 7:   7  0.46091621 …
Run Code Online (Sandbox Code Playgroud)

loops r time-series vectorization data.table

8
推荐指数
1
解决办法
108
查看次数

R Shinydashboard 删除图形周围的空白边框

我用来ggplot2创建图形并将它们嵌入到shinydashboard. 目标是让一切尽可能“透明”,其中涉及将背景设置为themerenderPlot仪表板背景相同的十六进制代码:

library(shiny)
library(shinydashboard)
library(ggplot2)

ui <- dashboardPage(
  dashboardHeader(title = "Dashboard"),
  dashboardSidebar(),
  dashboardBody(
    column(4, plotOutput("plot")
    )
  )
)

server <- function(input, output) {
  output$plot <- renderPlot({
    ggplot(mpg, aes(displ, hwy, colour = class)) + 
      geom_point() +
      theme(plot.background = element_rect(fill = "#ECF0F5"))
  }, bg="transparent")
}

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

这会产生以下输出,但是,图形的 3 个边周围有一个非常细的空白边框,如下所示(我放大并将空白更改为红色以提高可见度。在实际输出中,它是白色的)。

在此输入图像描述

如何消除这个空白区域?

r spacing shiny shinydashboard

5
推荐指数
0
解决办法
418
查看次数

列布局中的 R Shiny Flexdashboard ValueBox

我需要在 Shinydashboard 的列布局中对齐一些元素,该仪表板结合了 flexdashboard 中的一些元素。这是代码:

library(shiny)
library(shinydashboard)
library(flexdashboard)

ui <- dashboardPage(
  dashboardHeader(title = "Dashboard"),
  dashboardSidebar(),
  dashboardBody(
    column(3,flexdashboard::valueBoxOutput("ValueBox")),
    #flexdashboard::valueBoxOutput("ValueBox"),
    column(3,plotOutput("plot1",height = 150)),
    column(6,h3("Gauges"),
           fluidRow(
             column(3,flexdashboard::gaugeOutput("Gauge1")),
             column(3,flexdashboard::gaugeOutput("Gauge2"))
             )
           )
    )
)

server <- function(input, output) {

  output$ValueBox <- renderValueBox({
    shinydashboard::valueBox(
      value = 100,
      subtitle = "Value",
      icon = icon("area-chart"),
      color = "aqua"
    )
  })

  set.seed(122)
  histdata <- rnorm(500)

  output$plot1 <- renderPlot({
    data <- histdata
    hist(data)
  })

  output$Gauge1 <- flexdashboard::renderGauge({
    gauge(60, min = 0, max = 100, symbol = "%") 
  })  

  output$Gauge2 <- …
Run Code Online (Sandbox Code Playgroud)

r shiny shinydashboard flexdashboard

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