当我运行这个时
zip('C:\\path\\to\\dir\\out'
, files = paste0('C:\\path\\to\\dir\\', c('one.xlsx', 'two.xlsx')))
Run Code Online (Sandbox Code Playgroud)
它压缩文件,但解压缩它们会产生一个包含“path”文件夹的文件夹,其中包含“to”文件夹等(完整目录路径)。所以解压后,文件现在在C:\\path\\to\\dir\\out\\path\\to\\dir\\.
如何在生成的 zip 文件不包含所有父目录的情况下压缩文件?
我使用的是 Windows 10
platform x86_64-w64-mingw32
arch x86_64
os mingw32
system x86_64, mingw32
status
major 3
minor 4.2
year 2017
month 09
day 28
svn rev 73368
language R
version.string R version 3.4.2 (2017-09-28)
nickname Short Summer
Run Code Online (Sandbox Code Playgroud) 一些J表达式保留列名称,有些则不保留:
library(data.table)
d = data.table(hello = 1)
d[, .(hello)]
# hello
# 1: 1
d[, c(.(hello))]
# V1
# 1: 1
d[, {.(hello)}]
# hello
# 1: 1
d[, {1; .(hello)}]
# V1
# 1: 1
d[, .(get("hello"))]
# V1
# 1: 1
d[, mget("hello")]
# hello
# 1: 1
d[, c(mget("hello"))]
# Error: value for ‘hello’ not found # WTF?
d[, {1; mget("hello")}]
# hello
# 1: 1
Run Code Online (Sandbox Code Playgroud)
一般规则是什么?
我在R中关注了DT(data.table)。
dt <- fread("
id| rowids | charge | payment | balance
a | 1 | 7.1 | 0 |
a | 2 | 1.2 | 3 |
a | 3 | 1.7 | 1 |
b | 1 | 8.1 | 0 |
b | 2 | 2.5 | 4 |
b | 3 | 2.3 | 2 |
b | 4 | 3.2 | 1 |
",
sep = "|",
colClasses = c("character", "numeric", "numeric", "numeric",
"numeric"))
Run Code Online (Sandbox Code Playgroud)
应该在每个id组中将“余额”计算为“余额<-previous.row.balance …
在带有html输出的R markdown文档中,我可以创建带有标题和图像的标签,如下所示:
```{r}
print.img <- function(img, caption = ''){
cat('')
}
folder <- '/Users/U77549/Desktop/'
require(magrittr)
```
## Some Tabs
###{.tabset}
#### Tab 1
```{r, results = 'asis'}
paste0(folder, 'a', '.png') %>% print.img
```
#### Tab 2
```{r, results = 'asis'}
paste0(folder, 'b', '.png') %>% print.img
```
Run Code Online (Sandbox Code Playgroud)
但是,如果我想迭代生成一堆标签怎么办?这是我的尝试。
```{r }
make.tabs <- function(title, image){
catx <- function(...) cat(..., sep = '')
for(i in seq_along(title)){
catx('#### ', title[i], '\n')
catx("```{r, results = 'asis'}", '\n')
catx("paste0(folder, '", image[i], "', …Run Code Online (Sandbox Code Playgroud) 采取以下行动的惯用方式是什么data.table?
library(dplyr)
df %>%
group_by(b) %>%
slice(1:10)
Run Code Online (Sandbox Code Playgroud)
我可以
library(data.table)
df[, .SD[1:10]
, by = b]
Run Code Online (Sandbox Code Playgroud)
但这似乎要慢得多。有没有更好的办法?
set.seed(0)
df <- rep(1:500, sample(500:1000, 500, T)) %>%
data.table(a = runif(length(.))
,b = .)
f1 <- function(df){
df %>%
group_by(b) %>%
slice(1:10)
}
f2 <- function(df){
df[, .SD[1:10]
, by = b]
}
library(microbenchmark)
microbenchmark(f1(df), f2(df))
#Unit: milliseconds
# expr min lq mean median uq max neval
# f1(df) 17.67435 19.50381 22.06026 20.50166 21.42668 78.3318 100
# f2(df) 69.69554 79.43387 119.67845 88.25585 …Run Code Online (Sandbox Code Playgroud) 包中的createStyle函数openxlsx有一个参数numFmt,它允许您创建一个 excel 格式以应用于 .xlsx 文件中的特定单元格。您可以通过指定来舍入值numFmt = '0',并且可以通过指定来应用货币格式numFmt = "CURRENCY"。
有没有办法指定四舍五入的货币格式?我尝试了以下方法:
$103.00.numfmt = 'CURRENCY0' 不起作用如果没有,是否有另一个包允许您指定 excel 单元格的格式,并允许对货币格式的单元格进行四舍五入?
编辑:
这给了我我想要的(货币格式,带逗号,没有美分)
createStyle(numFmt="$0,0")
Run Code Online (Sandbox Code Playgroud) 我想总结这个数据框中除了一个数字列之外的所有内容。
Group, Registered, Votes, Beans
A, 111, 12, 100
A, 111, 13, 200
A, 111, 14, 300
Run Code Online (Sandbox Code Playgroud)
我想将其分组Group,总结除Registered.
summarise_if(
.tbl = group_by(
.data = x,
Precinct
),
.predicate = is.numeric,
.funs = sum
)
Run Code Online (Sandbox Code Playgroud)
这里的问题是结果是一个数据框,它汇总了所有数字列,包括Registered. 我如何总结所有但Registered?
我想要的输出看起来像这样
Group, Registered, Votes, Beans
A, 111, 39, 600
Run Code Online (Sandbox Code Playgroud) I have the following code for plotting a simple lollipop chart for my data:
p <-
data %>% mutate(Activity_Name = fct_reorder(Activity_Name, count)) %>%
ggplot(aes(x = Activity_Name, y = count)) +
geom_segment(aes(
x = Activity_Name,
xend = Activity_Name,
y = 0,
yend = count
),
color = "skyblue") +
geom_point(color = "#F2F7F2",
size = 5,
alpha = 0.6) +
theme_light() +
scale_y_log10() +
coord_flip()
Run Code Online (Sandbox Code Playgroud)
I would like to order this in descending order of Activity Name's counts. Even though I've …
我有下面的闪亮应用程序。我第一次选择任何给定数字时,需要 3 秒才能加载结果。由于bindCache,如果我稍后选择相同的数字,我会立即得到结果。
但是,我不想手动选择所有 10 个数字,只是为了让我的应用程序在呈现之前做出响应。有什么办法可以提前缓存一组输入吗?在此示例中,我想要缓存input$num值 1 到 10 的结果。在实际应用程序中,大约有 5 个输入,每个输入有 5 个可能的值,代表我想要缓存的 25 个可能的结果。
library(shiny)
ui <- fluidPage(
sliderInput('num', 'Pick a number:', min = 1, max = 10, value = 1),
textOutput('out')
)
server <- function(input, output, session) {
output$out <- reactive({
Sys.sleep(3)
paste("Your number is:", input$num)
}) %>% bindCache(input$num)
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
笔记:
一种回应可能是我应该手动预先计算这些结果。在真实的应用程序中,大部分时间来自gt::render_gt我提前创建的表gt::gt_output。gt我相信这些函数只能在反应式上下文中使用(意味着只能在闪亮的应用程序中使用?)
编辑:
作为旁注,我最初的问题是通过gt::as_raw_html在闪亮的应用程序之前的一步中使用渲染表格来解决的。但仍然留下这个问题,因为在其他情况下有时会出现问题。
我有一个如下所示的数据框:
ID pick1 pick2 pick3
1 NA 21/11/29 21/11/30
2 21/11/28 21/11/29 NA
3 21/11/28 NA 21/11/30
4 NA 21/11/29 21/11/30
Run Code Online (Sandbox Code Playgroud)
每个参与者(ID)可以从 3 个选项中选择 2 个日期。现在我想总结所选日期以获得如下小标题:
ID date1 date2
1 21/11/29 21/11/30
2 21/11/28 21/11/29
3 21/11/28 21/11/30
4 21/11/29 21/11/30
Run Code Online (Sandbox Code Playgroud)
但是,我无法仅使用 tidyverse 函数使其工作。我已经开始使用这个库,但在网上找不到我的问题的解决方案