小编sta*_*tor的帖子

具有多个级别的R Markdown子弹列表

https://github.com/rstudio/cheatsheets/raw/master/rmarkdown-2.0.pdf

上面的备忘单列出了以下语法,以在R Markdown中生成项目符号列表.*是主要的固体子弹.+是一个二级空心子弹.并且-是一个三级实心广场.

* unordered list + sub-item 1 + sub-item 2 - sub-sub-item 1

用knitr渲染输出后,我没有得到预期的输出.我得到了下面显示的内容.第二行和第三行不缩进.只有最后一行是缩进的,只有一个缩进而不是预期的两个.和所有的子弹是次要空心风格.这就好像我将以下语法放入R Studio,但我没有.

+ unordered list + sub-item 1 + sub-item 2 + sub-sub-item 1

我如何得到我的意图,第一块粘贴语法?

markdown r knitr r-markdown

16
推荐指数
1
解决办法
2万
查看次数

dplyr if_else()vs base R ifelse()

我在Tidyverse中相当熟练,但总是使用ifelse()而不是dplyr if_else().我想切换此行为,并默认为始终使用dplyr::if_else()和弃用ifelse()我的代码.

有什么理由不这样做吗?这可能会让我陷入困境吗?我会饶有你的细节,但最近,if_else()当我在数据分析中不知不觉地创建了一列字符矩阵时,并没有使用我.如果我切换到总是使用if_else()我希望将来避免这个问题.

if-statement r dplyr

15
推荐指数
4
解决办法
5845
查看次数

在R dplyr中为什么我需要在count()之后取消组合()?

当我第一次开始在RI中编程时,通常会使用dplyr count().

library(tidyverse)    
mtcars %>% count(cyl)
Run Code Online (Sandbox Code Playgroud)

一旦我开始使用apply函数,我开始遇到count()的问题.如果我简单地将ungroup()添加到我的计数结束(),那么问题就会消失.

我没有任何特别的可复制品来展示.但有人可以解释问题可能是什么,为什么ungroup()总是修复它,并且在每次count()之后或者在任何group_by()之后一直使用ungroup()有任何缺点吗?当然,我假设我不再需要在计算或汇总后对数据进行分组.

mtcars %>% count(cyl) %>% ungroup()
Run Code Online (Sandbox Code Playgroud)

group-by r lapply sapply dplyr

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

if_else()`false`必须是double类型,而不是整数 - 在R中

一串长dplyr管道的末端是

mutate(n = if_else(FiscalYear == "FY2018" & Candy == "SNICKERS", n - 3, n))

这给出了这个错误

Error in mutate_impl(.data, dots) : Evaluation error: `false` must be type double, not integer.
Run Code Online (Sandbox Code Playgroud)

如果我改为这两个中的任何一个,那就会消失

mutate(n = ifelse(FiscalYear == "FY2018" & Candy == "SNICKERS", n - 3, n))

mutate(n = if_else(FiscalYear == "FY2018" & Candy == "SNICKERS", n - 3L, n))

我认为做一个简单的可重复娱乐是最简单的,所以我做了你在下面看到的,但我不能再得到错误了.知道发生了什么事吗?为什么不在ifelse哪里工作,如果我改变3到3L if_else,为什么if_else工作?我理解L 强制 3是一个整数,这是正确的吗?

library(tidyverse)
df <- tribble(
  ~name, ~fruit, ~qty,
  "Bob", "apple", 10,
  "Bill", "apple", …
Run Code Online (Sandbox Code Playgroud)

if-statement r dplyr

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

用于编织HTML与PDF的R Markdown条件

在LaTeX中,我可以通过以下方式创建条件

  \iftoggle{ebook}{
    \newcommand{\textbreak}{\newline\hrule\newline}
  }{
    \newcommand{\textbreak}{\begin{center}\LARGE{$\Psi\quad\Psi\quad\Psi$}\end{center}}
  }
Run Code Online (Sandbox Code Playgroud)

我可以在编织R Markdown时执行相同的操作,具体取决于输出是HTML还是PDF.

r pandoc knitr r-markdown

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

如何以NULL结束dplyr管道?允许轻松评论/取消评论

library(tidyverse)
ggplot(mpg, aes(hwy)) + 
  geom_histogram() + 
  theme_classic() + 
  NULL
Run Code Online (Sandbox Code Playgroud)

你还记得结束你的ggplot命令的酷炫技巧NULL,以便在代码中轻松注释/取消注释行吗?将上面的块与下面的块进行比较.在这个例子中,我将注释掉theme_classic() +,我的代码仍然正常,因为NULL最后.

ggplot(mpg, aes(hwy)) + 
  geom_histogram() + 
  # theme_classic() + 
  NULL
Run Code Online (Sandbox Code Playgroud)

好.那么如何使用dplyr管道做同样的事情呢?我想把它放在NULL最后,这样我就可以随意评论/取消注释count(cyl).但它不太有效.我得到了Error in .() : could not find function ".".

mtcars %>% 
  as_tibble() %>% 
  count(cyl) %>% 
  NULL

mtcars %>% 
  as_tibble() %>% 
  # count(cyl) %>% 
  NULL
Run Code Online (Sandbox Code Playgroud)

r ggplot2 dplyr

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

我希望主要/次要网格线的 ggplot 网格线厚度不同

我的例子取自这里(链接)。R 版本是 3.4.3,ggplot2 版本是 2.2.1

library(tidyverse)
df <- data.frame(dose=c("D0.5", "D1", "D2"),
                    len=c(4.2, 10, 29.5))

    ggplot(data=df, aes(x=dose, y=len)) +
      geom_bar(stat="identity")
Run Code Online (Sandbox Code Playgroud)

几乎每个 ggplot2 教程都展示了一些简单的图表。我总是注意到主要网格线的厚度大约是次要网格线的两倍,这正是我所期望的。这显示在下面的第一张图片中。看起来不错。

每当在 ggplot 上绘制某些内容时,默认情况下,次要网格线和主要网格线共享相同的权重、相同的厚度。为什么?我没有更改任何网格线设置?是否有一些我不小心启用/禁用的 R Studio 全局设置?我希望次要网格线比主要网格线更轻,就像显示的第一张图片一样。第二张图片是我在 ggplot 图表时得到的。

right_grid.png

不正确_grid.png

r ggplot2

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

ggplot 增加边界线粗细

如何增加蓝色边框线的粗细?stroke在下面的示例中,该参数被忽略。

library(tidyverse)
ggplot(mpg, aes(cty, hwy)) + 
  geom_col(color = "blue", stroke = 2)
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

如何使ggplot2轴在可变值处折断?

此@camille代码使用ggplot生成一个不错的pareto图。

library(tidyverse)

d <- tribble(
    ~ category, ~defect,
    "price", 80,
    "schedule", 27,
    "supplier", 66,
    "contact", 94,
    "item", 33
) %>% arrange(desc(defect)) %>%
    mutate(
        cumsum = cumsum(defect),
        freq = round(defect / sum(defect), 3),
        cum_freq = cumsum(freq)
    ) %>%
    mutate(category = as.factor(category) %>% fct_reorder(defect))

brks <- unique(d$cumsum)

ggplot(d, aes(x = fct_rev(category))) +
    geom_col(aes(y = defect)) +
    geom_point(aes(y = cumsum)) +
    geom_line(aes(y = cumsum, group = 1)) +
    scale_y_continuous(sec.axis = sec_axis(~. / max(d$cumsum), labels = scales::percent), breaks = brks)
Run Code Online (Sandbox Code Playgroud)

Capture3.png

几乎是完美的,只是我希望看到第二个y轴在y值累积处折断。这可以在base-R中使用以下代码来实现。但是如何在ggplot中完成呢?

## Creating the …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

ggplot2更改每个小平面面板的轴限制

library(tidyverse)
ggplot(mpg, aes(displ, cty)) + 
  geom_point() + 
  facet_grid(rows = vars(drv), scales = "free")
Run Code Online (Sandbox Code Playgroud)

上面的代码ggplot包括三个板4fr。我希望每个面板的y轴限制如下:

Panel y-min y-max breaks
----- ----- ----- ------
4     5     25    5
f     0     40    10
r     10    20    2
Run Code Online (Sandbox Code Playgroud)

如何修改我的代码来完成此任务?不知道是否scale_y_continuous更有意义,或coord_cartesian,或两者的某种组合。

r ggplot2

5
推荐指数
3
解决办法
3417
查看次数

标签 统计

r ×10

ggplot2 ×5

dplyr ×4

if-statement ×2

knitr ×2

r-markdown ×2

group-by ×1

lapply ×1

markdown ×1

pandoc ×1

sapply ×1