小编Ric*_*ard的帖子

漂亮的打印SQL代码来自与knitr的单独文件

使用代码块时,Knitr会生成一个很好的语法高亮代码,如下所示.

```sql
SELECT column
FROM table
```
Run Code Online (Sandbox Code Playgroud)

有可能实现相同的东西,但sql代码存储在文件中?就像是:

```sql
read_chunk('mycode.sql')
```
Run Code Online (Sandbox Code Playgroud)

r knitr r-markdown

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

为什么在具有多个组的大型数据帧上拆分效率低?

df %>% split(.$x)
Run Code Online (Sandbox Code Playgroud)

对于大量x的唯一值变得缓慢.如果我们将数据帧手动拆分为较小的子集,然后对每个子集执行拆分,我们将时间减少至少一个数量级.

library(dplyr)
library(microbenchmark)
library(caret)
library(purrr)

N      <- 10^6
groups <- 10^5
df     <- data.frame(x = sample(1:groups, N, replace = TRUE), 
                     y = sample(letters,  N, replace = TRUE))
ids      <- df$x %>% unique
folds10  <- createFolds(ids, 10)
folds100 <- createFolds(ids, 100)
Run Code Online (Sandbox Code Playgroud)

跑步microbenchmark给了我们

## Unit: seconds

## expr                                                  mean
l1 <- df %>% split(.$x)                                # 242.11805

l2 <- lapply(folds10,  function(id) df %>% 
      filter(x %in% id) %>% split(.$x)) %>% flatten    # 50.45156  

l3 <- lapply(folds100, function(id) df %>% …
Run Code Online (Sandbox Code Playgroud)

performance r purrr

8
推荐指数
2
解决办法
549
查看次数

rmarkdown生成的pdf文档中表格的标题

如何在rmarkdown生成的pdf_document中获取我的表浮动的标题?

运用

output:
  pdf_document:
    fig_caption: true
Run Code Online (Sandbox Code Playgroud)

```{r, fig.cap='a caption'} 
myplot 
```
Run Code Online (Sandbox Code Playgroud)

使用myplot和指定的标题生成浮动数字.

如何使用xtable生成的表实现相同的功能?

```{r, results='asis', fig.cap='table caption'}
    print(xtable(table), comment = FALSE)
```
Run Code Online (Sandbox Code Playgroud)

我曾尝试在print.xtable中使用floating.environment ='figure',但无济于事.

r xtable knitr r-markdown

7
推荐指数
2
解决办法
4382
查看次数

使用 dplyr 和 tidyr 计算小计

expand.grid(country = c('Sweden','Norway', 'Denmark','Finland'),
            sport = c('curling','crosscountry','downhill')) %>% 
    mutate(medals = sample(0:3, 12, TRUE)) -> 
 data
Run Code Online (Sandbox Code Playgroud)

使用 reshape2 的 dcast 只需一行即可实现此目的。使用自定义名称作为边距需要额外的步骤。

library(reshape2)

data %>% 
  dcast(country ~  sport, margins = TRUE, sum) %>% 

 # optional renaming of the margins `(all)`
  rename(Total = `(all)`) %>% 
  mutate(country = ifelse(country == "(all)", "Total", country))
Run Code Online (Sandbox Code Playgroud)

我的 dplyr + tidyr 方法很冗长。使用 tidyr 和 dplyr 编写此内容的最佳(紧凑且可读)方式是什么。

library(dplyr)
library(tidyr)

data %>% 
  group_by(sport) %>% 
  summarise(medals = sum(medals)) %>% 
  mutate(country = 'Total') ->
  sport_totals

data %>% 
  group_by(country) %>% 
  summarise(medals = sum(medals)) …
Run Code Online (Sandbox Code Playgroud)

r dplyr tidyr

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

在应用于向量的函数中使用ifelse和随机变量生成

我想创建一个函数,根据其输入生成一个随机数,并将其应用于布尔向量.该功能将用于生成大约500M元素的测试数据.

f <- function(x, p) ifelse(x, runif(1)^p, runif(1)^(1/p))
f(c(T,T,T,F,F,F), 2)   
Run Code Online (Sandbox Code Playgroud)

我得到的不是我想要的.

[1] 0.0054 0.0054 0.0054 0.8278 0.8278 0.8278
Run Code Online (Sandbox Code Playgroud)

我期望输入向量的每个元素都有一个新的随机数,而不是重复的两个随机数.为什么我得到这个结果,我怎样才能得到与之相同的结果

c(runif(3)^2, runif(3)^(1/2))
Run Code Online (Sandbox Code Playgroud)

这会为每个元素产生一个新的随机数

0.0774 0.7071 0.2184 0.8719 0.9990 0.8819
Run Code Online (Sandbox Code Playgroud)

random r

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

标签 统计

r ×5

knitr ×2

r-markdown ×2

dplyr ×1

performance ×1

purrr ×1

random ×1

tidyr ×1

xtable ×1