小编Ice*_*can的帖子

zip 文件不包含父目录

当我运行这个时

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)

zip r

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

data.table究竟何时保留列名?

一些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 data.table

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

R :: data.table:使用先前的余额和按行迭代按组生成运行余额

我在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 …

iteration row r data.table

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

使用循环在R markdown中生成选项卡

在带有html输出的R markdown文档中,我可以创建带有标题和图像的标签,如下所示:

```{r}
print.img <- function(img, caption = ''){
 cat('![', caption,   '](', img, ')')
}
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)

r r-markdown

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

数据表中的dplyr :: slice

采取以下行动的惯用方式是什么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)

r slice dplyr data.table

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

openxlsx 货币样式 - 是否有四舍五入选项?

包中的createStyle函数openxlsx有一个参数numFmt,它允许您创建一个 excel 格式以应用于 .xlsx 文件中的特定单元格。您可以通过指定来舍入值numFmt = '0',并且可以通过指定来应用货币格式numFmt = "CURRENCY"

有没有办法指定四舍五入的货币格式?我尝试了以下方法:

  • 舍入数据框中的值不起作用,因为 excel 单元格仍然显示美分,例如$103.00.
  • numfmt = 'CURRENCY0' 不起作用

如果没有,是否有另一个包允许您指定 excel 单元格的格式,并允许对货币格式的单元格进行四舍五入?

编辑:

这给了我我想要的(货币格式,带逗号,没有美分)

createStyle(numFmt="$0,0")
Run Code Online (Sandbox Code Playgroud)

excel r xlsx openxlsx

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

我如何汇总除我指定的列之外的所有列?

我想总结这个数据框中除了一个数字列之外的所有内容。

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)

r dplyr

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

Forcats reordering not working for ggplot

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 …

r forcats

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

有没有办法在 Shiny 中预先缓存输出?

我有下面的闪亮应用程序。我第一次选择任何给定数字时,需要 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_outputgt我相信这些函数只能在反应式上下文中使用(意味着只能在闪亮的应用程序中使用?)

编辑:

作为旁注,我最初的问题是通过gt::as_raw_html在闪亮的应用程序之前的一步中使用渲染表格来解决的。但仍然留下这个问题,因为在其他情况下有时会出现问题。

r shiny

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

Tidyverse:按组减少变量

我有一个如下所示的数据框:

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 函数使其工作。我已经开始使用这个库,但在网上找不到我的问题的解决方案

r tidyverse

5
推荐指数
2
解决办法
521
查看次数

标签 统计

r ×10

data.table ×3

dplyr ×2

excel ×1

forcats ×1

iteration ×1

openxlsx ×1

r-markdown ×1

row ×1

shiny ×1

slice ×1

tidyverse ×1

xlsx ×1

zip ×1