小编Fab*_*ing的帖子

dplyr:访问当前组变量

在使用data.table很长一段时间后,我现在认为是时候尝试dplyr了.这很有趣,但我无法弄清楚如何访问 - 当前的分组变量 - 每组返回多个值

以下示例显示与data.table一起正常工作.你会怎么用dplyr写这个

foo <- matrix(c(1, 2, 3, 4), ncol = 2)
dt <- data.table(a = c(1, 1, 2), b = c(4, 5, 6))

# data.table (expected)
dt[, .(c = foo[, a]), by = a]
   a c
1: 1 1
2: 1 2
3: 2 3
4: 2 4

# dplyr (?)
dt %>% 
  group_by(a) %>% 
  summarize(c = foo[a])
Run Code Online (Sandbox Code Playgroud)

r dplyr data.table

13
推荐指数
2
解决办法
2244
查看次数

最佳实践:随着时间的推移填充实例变量

我是面向对象编程概念的新手(在java中),我经常遇到以下设计问题:

我经常创建具有实例变量的类,这些变量在初始化时是未知的.随着时间的推移填充这些变量.这不是一个真正的问题,因为这些变量在填充之前是空的,因此我的问题更多地是关于这种情况下的最佳实践.

让我用一个例子解释一下.我上课了Car.每Carcolor,vMax,weight,horsepower等.

当初始化Car只是它color,weight并且horsepower是已知的.- >Car(color, weight, horsepower)

vMax现在可以计算(比方说:weight/horsepower).令我困惑的是,Car在初始化之后,"不完整"意味着vMax只会随着时间的推移填充.

我觉得这很难看,当然汽车的例子很简单.我经常会有10多个属性的类,其中一些是随着时间的推移计算出来的,后者在代码中后来用于计算该对象的更多属性.然后变得很难知道哪些变量已经在某一点填充而哪些不是.

我只是想知道这是"正常"和OOP的工作方式,还是应该避免这种情况.如果是的话,我会很高兴看到一些设计提示.

迈克尔

java oop class-design design-principles

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

闪亮的嵌套/多个对话框

是否可以在闪亮的情况下打开多个对话框?

在下面的应用程序中,我想显示一个模态对话框,它本身可以打开另一个“详细信息”模态对话框。这很有效,但只要打开“详细信息”对话框,第一个对话框就会消失。

我想在第一个对话框的“顶部”打开第二个对话框,每当我关闭第二个对话框时,我都想再次看到第一个对话框。

我将如何用闪亮的方式做到这一点?

library(shiny)

ui <- basicPage({
  actionButton("openDialog", "Open dialog")
})

server <- function(input, output, session) {

  observeEvent(input$openDialog, {
    showModal(
      modalDialog(
        actionButton("openDetails", "OpenDetails")
      )
    )
  })

  observeEvent(input$openDetails, {
    showModal(modalDialog(div("Test")))
  })
}

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

r modal-dialog shiny

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

在"外部"data.table中使用"by-argument"来过滤"内部"data.table

我仍然有一些问题理解data.table符号.任何人都可以解释为什么以下不起作用?

我正在尝试使用日期将日期分组cut.使用的中断可以在另一个data.table中找到,并且取决于by外部"data"data.table的参数

data <- data.table(A = c(1, 1, 1, 2, 2, 2),
                   DATE = as.POSIXct(c("01-01-2012", "30-05-2015", "01-01-2020", "30-06-2012", "30-06-2013", "01-01-1999"), format = "%d-%m-%Y"))

breaks <- data.table(B = c(1, 1, 2, 2),
                     BREAKPOINT = as.POSIXct(c("01-01-2015", "01-01-2016", "30-06-2012", "30-06-2013"), format = "%d-%m-%Y"))

data[, bucket := cut(DATE, breaks[B == A, BREAKPOINT], ordered_result = T), by = A]
Run Code Online (Sandbox Code Playgroud)

我可以得到理想的结果

# expected
data[A == 1, bucket := cut(DATE, breaks[B == 1, BREAKPOINT], ordered_result = T)]
data[A == 2, bucket := cut(DATE, …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

data.table无法识别过滤器中的逻辑

在下面的代码片段中,data.table在i中使用时似乎不识别逻辑.

我在最小的例子中重现问题的所有尝试都失败了,这就是我在这里发布完整部分的原因.我希望它与"as.logical(cumsum(CURRENT_TRIP))"部分有关,但只是一种直觉......

# Testdata
timetable <- data.table(rbind(
    c("r1", "t1_1", "p1", 10, 10),
    c("r1", "t1_1", "p2", 11, 11),
    c("r1", "t1_1", "p3", 12, 12),
    c("r1", "t1_1", "p4", 13, 13),
    c("r1", "t1_1", "p5", 14, 14),
    c("r1", "t1_1", "p6", 15, 15),
    c("r1", "t1_1", "p7", 16, 16),
    c("r1", "t1_1", "p8", 17, 17),
    c("r1", "t1_1", "p9", 18, 18),
    c("r1", "t1_1", "p10", 19, 19),

    c("r2", "t2", "p11", 9, 9),
    c("r2", "t2", "p12", 10, 10),
    c("r2", "t2", "p3", 11, 11),
    c("r2", "t2", "p13", 12, 12),
    c("r2", "t2", "p14", …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

在R中转义特殊的乳胶字符

编辑:在包Hmisc中找到函数latexTranslate。似乎是我要找的东西。

是否有R函数转义特殊的乳胶字符(使用cat之后)。

char <- "Some # special & chars ^ in \this > text"
cat(someFunction(char))
Run Code Online (Sandbox Code Playgroud)

预期输出:$ \反斜杠$ this $> $文本中有一些特殊的\&chars \ ^

在此处输入图片说明

如果没有,我自己如何做的任何想法。我对gsub等的所有尝试均因转义“ \”而失败。到目前为止我所做的...

escapeLatexSpecials <- function(x) {
  x <- gsub("\\", "$\\backslash$", x, fixed = T)
  x <- gsub("#", "\\\\#", x)
  x <- gsub("$", "\\\\$", x)
  x <- gsub("%", "\\\\%", x)
  x <- gsub("&", "\\\\&", x)
  x <- gsub("~", "\\\\~", x)
  x <- gsub("_", "\\\\_", x)
  x <- gsub("^", "\\\\^", x)
  x <- gsub("\\{", "\\\\{", x)
  x <- gsub("\\}", …
Run Code Online (Sandbox Code Playgroud)

r

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

Plotly 到 pdf 报告

我想在 pdf 文件中添加一个情节图。这应该在本地完成(没有 plotly_IMAGE)。不幸的是,我无权访问 webshot(因为我无权安装 PhantomJS)。因此,我尝试了此处描述的解决方法:https : //github.com/ropensci/plotly/issues/311使用闪亮的小工具。但是我想对其进行调整,以便在不单击小工具中完成复制的情况下完成复制。

我所有的尝试(见下文)都失败了,因为我无法延迟 downloadHandler 直到复制完成。

任何建议如何在单击“下载”按钮后按顺序完成所需的结果(首先将 plotly-Image 复制为 png,然后在 pdf-Export 中使用它)?

用户界面:

library(shiny)
library(plotly)
library(rsvg)


shinyUI(fluidPage(
  title = 'Download a PDF report',
  sidebarLayout(

    sidebarPanel(
      helpText(),
      selectInput('x', 'Build a regression model of mpg against:',
                  choices = names(mtcars)[-1]),
      radioButtons('format', 'Document format', c('PDF', 'HTML', 'Word'),
                   inline = TRUE),
      downloadButton('downloadReport'),
      tags$script('
       document.getElementById("downloadReport").onclick = function() {
          var plotly_svg = Plotly.Snapshot.toSVG(
            document.querySelectorAll(".plotly")[0]
      );

                  Shiny.onInputChange("plotly_svg", plotly_svg);
          };
       ')
    ),
    mainPanel(
      plotlyOutput('regPlot')
    )
  )
))
Run Code Online (Sandbox Code Playgroud)

服务器:

library(shiny)
library(plotly)
library(rsvg)

shinyServer(function(input, …
Run Code Online (Sandbox Code Playgroud)

r knitr r-markdown shiny plotly

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

使用knitr关闭Rmd中的标题页

编辑:

当覆盖pagestyle"plain"并使用documentclass文章时,几乎可以达到所需的结果.

\fancypagestyle{plain}{
   \fancyhf{}
   \fancyhead[RO,RE]{Header}
   \fancyfoot[RO,RE]{\thepage}
}
Run Code Online (Sandbox Code Playgroud)

我面临的问题是头版(标题和表格之间的空间)在第一页上更大.这似乎是因为\ maketitle.删除时

$if(title)$
\maketitle
$endif$
Run Code Online (Sandbox Code Playgroud)

从(默认)pandoc模板一切都按预期工作.Imho相同的结果也应该是可以访问的(不编辑模板)但在我的.rmd文件的yaml-header中使用"title:false".但是,当查看生成的.tex时,"\ maketitle"命令似乎仍然存在.这是为什么?

原始问题:

我正在尝试使用knitr创建pdf时关闭标题页.该文档包含带有重复标题的longtable.

我期待一个pdf,其中所有页面都有指定的页眉和页脚信息(和headsep).在下面的运行示例中,第1页的行为有所不同.尝试禁用标题页未成功.

test.Rmd

---
author: "Fabian"
output: pdf_document
documentclass: report 
classoption: notitlepage
params: 
  testParam: !r data.frame(a = 1:100, b = 2:101)
header-includes:
  \usepackage{longtable}
  \usepackage{xcolor}

  \usepackage{hyperref}
  \hypersetup{colorlinks = false}

  \usepackage{geometry}
  \geometry{a4paper, landscape, left = 13mm, right = 14mm, top = 5mm, bottom = 13mm, includeheadfoot}
  \headsep = 5mm

  \usepackage{graphicx}
  \usepackage{lastpage}
  \usepackage{fancyhdr}
  \pagestyle{fancy}
  \fancyhf{}
  \fancyhead[RO,RE]{Header}
  \fancyfoot[RO,RE]{\thepage}
---

```{r setup, include = F}
library(data.table)
```

\centering
\begin{longtable}{ll}
\hline …
Run Code Online (Sandbox Code Playgroud)

latex yaml r knitr r-markdown

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

htmltools::withtags 中的变量访问

为什么以下不打印“names(data)”的表th-elements?该元素保持为空。有趣的是,tr 部分中的 lapply 似乎确实可以正常工作,没有任何问题。

data <- data.frame(a = 1, b = 2)

htmltools::withTags(table(
  class = 'display',
  thead(
    tr(
      th(rowspan = 2, "Test1"),
      th(rowspan = 2, "Test2"),
      th(rowspan = 2, "Test3"),
      th(colspan = 2, names(data)[1]),
      th(colspan = 2, names(data)[2])
    ),
    tr(
      lapply(rep(c('Abs', 'Change'), 2), th)
    )
  )
))
Run Code Online (Sandbox Code Playgroud)

给出:

<table class="display">
  <thead>
    <tr>
      <th rowspan="2">Test1</th>
      <th rowspan="2">Test2</th>
      <th rowspan="2">Test3</th>
      <th colspan="2"></th> ## Why empty???
      <th colspan="2"></th> ## Why empty???
    </tr>
    <tr>
      <th>Abs</th>
      <th>Change</th>
      <th>Abs</th>
      <th>Change</th>
    </tr>
  </thead>
</table>
Run Code Online (Sandbox Code Playgroud)

r shiny dt

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