在使用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) 我是面向对象编程概念的新手(在java中),我经常遇到以下设计问题:
我经常创建具有实例变量的类,这些变量在初始化时是未知的.随着时间的推移填充这些变量.这不是一个真正的问题,因为这些变量在填充之前是空的,因此我的问题更多地是关于这种情况下的最佳实践.
让我用一个例子解释一下.我上课了Car.每Car有color,vMax,weight,horsepower等.
当初始化Car只是它color,weight并且horsepower是已知的.- >Car(color, weight, horsepower)
在vMax现在可以计算(比方说:weight/horsepower).令我困惑的是,Car在初始化之后,"不完整"意味着vMax只会随着时间的推移填充.
我觉得这很难看,当然汽车的例子很简单.我经常会有10多个属性的类,其中一些是随着时间的推移计算出来的,后者在代码中后来用于计算该对象的更多属性.然后变得很难知道哪些变量已经在某一点填充而哪些不是.
我只是想知道这是"正常"和OOP的工作方式,还是应该避免这种情况.如果是的话,我会很高兴看到一些设计提示.
迈克尔
是否可以在闪亮的情况下打开多个对话框?
在下面的应用程序中,我想显示一个模态对话框,它本身可以打开另一个“详细信息”模态对话框。这很有效,但只要打开“详细信息”对话框,第一个对话框就会消失。
我想在第一个对话框的“顶部”打开第二个对话框,每当我关闭第二个对话框时,我都想再次看到第一个对话框。
我将如何用闪亮的方式做到这一点?
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) 我仍然有一些问题理解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) 在下面的代码片段中,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) 编辑:在包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) 我想在 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) 编辑:
当覆盖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) 为什么以下不打印“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 ×8
data.table ×3
shiny ×3
knitr ×2
r-markdown ×2
class-design ×1
dplyr ×1
dt ×1
java ×1
latex ×1
modal-dialog ×1
oop ×1
plotly ×1
yaml ×1