小编jza*_*dra的帖子

dplyr使用单个函数的多个返回值汇总()

我想知道是否有一种方法可以使用函数with summarise(dplyr 0.1.2)返回多个值(例如包中的describe函数psych).

如果没有,是因为它尚未实施,还是有理由不是一个好主意?

例:

require(psych)
require(ggplot2)
require(dplyr)

dgrp <- group_by(diamonds, cut)
describe(dgrp$price)
summarise(dgrp, describe(price))
Run Code Online (Sandbox Code Playgroud)

生产: Error: expecting a single value

r vector dplyr summarize

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

dplyr/left_join中的嵌套管道链

在尝试获取分组滞后变量(不可能仅使用lag)的过程中,建议的解决方案是将数据拉出,滞后于不同的行,然后重新加入它.

我更喜欢在不创建中间对象的情况下这样做,并且希望在链中间进行.然而,它似乎没有像我期望的那样工作,并且问题似乎是.在left_join中使用嵌套链之间的一些交互.

require(tidyverse)
#> Loading required package: tidyverse
df <- data.frame(Team = c("A", "A", "A", "A", "B", "B", "B", "C", "C", "D", "D"),
                 Date = c("2016-05-10","2016-05-10", "2016-05-10", "2016-05-10",
                          "2016-05-12", "2016-05-12", "2016-05-12",
                          "2016-05-15","2016-05-15",
                          "2016-05-30", "2016-05-30"), 
                 Points = c(1,4,3,2,1,5,6,1,2,3,9)
)


#This works:
df %>% left_join(x = ., y = df %>% 
                   distinct(Team, Date) %>% 
                   mutate(Date_Lagged = lag(Date)))
#> Joining, by = c("Team", "Date")
#>    Team       Date Points Date_Lagged
#> 1     A 2016-05-10      1        <NA>
#> 2     A 2016-05-10 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

Rmarkdown:明确指定块内绘图的图形大小

results = 'asis'我正在使用 RMarkdown 在功能上创建一个使用purrr::map. 每次迭代时都会从块中产生多个图purrr。它们中的大多数大小相同,可以使用图形大小的块选项进行设置。然而,其中一两个需要具有不同的尺寸。由于循环/映射的设置方式,不可能将代码分成不同的块。

我发现的最接近的是http://michaeljw.com/blog/post/subchunkify/,但是当我在需要不同大小的图上使用它时,它会导致使用 print() 函数输出的第一次迭代的图在 subchunkify 的地块位置进行回收。

有没有一种不同的、不那么老套的方法来做到这一点?或者 subchunkify 代码中是否有一些明显可以修复的内容?

这是subchunkify()

subchunkify <- function(g, fig_height=7, fig_width=5) {
  g_deparsed <- paste0(deparse(
    function() {g}
  ), collapse = '')

  sub_chunk <- paste0("
  `","``{r sub_chunk_", floor(runif(1) * 10000), ", fig.height=", fig_height, ", fig.width=", fig_width, ", echo=FALSE}",
  "\n(", 
    g_deparsed
    , ")()",
  "\n`","``
  ")

  cat(knitr::knit(text = knitr::knit_expand(text = sub_chunk), quiet = TRUE))
}
Run Code Online (Sandbox Code Playgroud)

r r-markdown

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

编写在 dplyr::mutate() 内部工作的自定义函数

我正在努力编写一个在dplyr::mutate().

由于rowwise() %>% sum()在大型数据集上速度相当慢,因此建议的替代方案是返回到 baseR。我希望按如下方式简化此过程,但在 mutate 函数中传递数据时遇到问题。

require(tidyverse)
#> Loading required package: tidyverse
#I'd like to write a function that works inside mutate and replaces the rowSums(select()).
cars <- as_tibble(cars)

cars %>% 
  mutate(sum = rowSums(select(., speed, dist), na.rm = T))
#> # A tibble: 50 x 3
#>    speed  dist   sum
#>    <dbl> <dbl> <dbl>
#>  1    4.    2.    6.
#>  2    4.   10.   14.
#>  3    7.    4.   11.
#>  4    7.   22.   29.
#> …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

将 RStudio 指向远程 R 实例

我想让 RStudio 在我的本地机器 (os x) 上运行,并在远程计算机上运行 R 可执行文件。

我知道我可以在远程机器上运行 RStudio Server 并使用 Web 界面连接到它,但是由于延迟和移动窗口和使用快捷方式的能力有限,我讨厌使用 Web 界面进行此类操作。

由于 RStudio 不是独立的,而是指向本地机器上其他地方的 R 可执行文件(在一个可以改变的位置),理论上这个指针似乎可以指向远程位置。(有什么原因这是不正确的吗?)

我怎样才能做到这一点?

r rstudio

5
推荐指数
0
解决办法
78
查看次数

Rlang:如何将字符串视为符号

我再次对文档rlang和错误消息感到困惑。我已经使用双刘海和三重刘海、 、 、 、 以及其他所有名称不明确的 rlang 函数尝试了 20 种:=不同quoenquo迭代ensym

如果您感到沮丧,那是因为每次我尝试使用rlang处理对象名称的变量时都会遇到同样的问题。我错过了一些重要的事情吗?我是傻子吗?函数rlang名称和文档真的很差吗?

我正在尝试确定 a 中变量的类tibble。除了帮助执行此操作之外,如果有人可以建议我如何在文档中找到此问题的答案,我将不胜感激。

require(tidyverse)
require(rlang)

x <- enframe(names(mtcars), name = NULL, value = "var") %>% 
  add_column(df = "mtcars")

x %>% mutate(cls = class(sym(paste0(df, "$", var))))
#> Only strings can be converted to symbols
Run Code Online (Sandbox Code Playgroud)

由reprex 包(v0.3.0)于 2019-10-27 创建

r tidyverse rlang

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

RStudio / RMarkdown:输出可以设置为“内联”和“在控制台中”吗?

有没有办法将 Rmd 输出设置为“内联块输出”和“控制台中的块输出”?

我喜欢将内容内联,但我也喜欢同时将绘图转到另一台监视器上的缩放绘图窗口。有什么设置可以同时允许两者吗?

IE:同时具有这两个设置:

output: 
  html_document:
    toc: true
    toc_float: true
    toc_depth: 3
editor_options: 
  chunk_output_type: inline
Run Code Online (Sandbox Code Playgroud)

output: 
  html_document:
    toc: true
    toc_float: true
    toc_depth: 3
editor_options: 
  chunk_output_type: console
Run Code Online (Sandbox Code Playgroud)

rstudio r-markdown

5
推荐指数
0
解决办法
324
查看次数

ggplot:将标题扩展到图边距之外

我有一个带有一些长标签和长标题的情节。我正在使用coord_flip(),因此由于标签的原因,绘图边距之外有很多空间。默认情况下,标题受绘图边距限制。

如何使标题延伸到绘图边距之外(向左),以便它可以跨越整个宽度?这是一个例子:

ggplot(diamonds, aes(x = cut)) + 
  geom_bar() + 
  coord_flip() + 
  scale_x_discrete("Cut", 
                   labels = c("Fair" = "Fair and a very long extra thing",
                              "Good" = "Good  and a very long extra thing",
                              "Very Good" = "VG  and a very long extra thing", 
                              "Premium" = "P and a very long extra thing. A very long label, just because", 
                              "Ideal" = "I and a very long extra thing")) + 
  ggtitle("This is my very long title.  Long long title. Very long. …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

4
推荐指数
1
解决办法
1583
查看次数

如何根据行中其他值的比例对值使用条件格式

我想在kable/中使用条件格式kableExtra根据行中的范围为值着色。我找到了很多关于如何通过列中的值来完成此操作的示例,但我很难按行来完成此操作。

以下是列值的示例:

require(tidyverse)
  require(knitr)
  require(kableExtra)
  iris[1:10, ] %>%
    mutate_if(is.numeric, function(x) {
      cell_spec(x, bold = T, 
                color = spec_color(x, end = 0.9),
                font_size = spec_font_size(x))
    }) %>%
    mutate(Species = cell_spec(
      Species, color = "white", bold = T,
      background = spec_color(1:10, end = 0.9, option = "A", direction = -1)
    )) %>%
    kable(escape = F, align = "c") %>%
    kable_styling(c("striped", "condensed"), full_width = F)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,我希望颜色由每行中的值范围确定。当然,在此示例中,第一列始终是最大的,最后一列是最小的,因此它们都会朝那个方向移动,但在我的实际数据中,最高值和最低值的位置位于每行的不同列中。

r knitr kableextra kable

4
推荐指数
1
解决办法
2069
查看次数

ggplot:以正确的值标记 geom_smooth / stat_smooth 值

我试图让标签与平滑线上的值对齐。虽然我看到的其他答案建议创建一个预测值的数据列,但我正在寻找一种更清洁的替代方案,它使用已经为 ggplot 生成的数据。

有关问题,请参见下面的示例:

require(tidyverse)
require(ggrepel)

set.seed(1)
df <- data.frame(x = rep(1:100, 5), y = c(sample(1:20, 100, T), sample(21:40, 100, T), sample(41:60, 100, T), sample(61:80, 100, T), sample(81:100, 100, T)), group = rep(letters[1:5], each = 100))
df <- tbl_df(df)

df %>% 
  ggplot(aes(x = x, y = y, label = group, color = group)) + 
  geom_smooth() +
  guides(color = F) +
  geom_text_repel(data = . %>% filter(x == max(x)), aes(x = x, y = y, label = group), nudge_x = 50)
Run Code Online (Sandbox Code Playgroud)

未对齐的标签

有没有办法在不使用 …

r ggplot2 ggrepel

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

标签 统计

r ×9

dplyr ×3

ggplot2 ×2

r-markdown ×2

rstudio ×2

ggrepel ×1

kable ×1

kableextra ×1

knitr ×1

rlang ×1

summarize ×1

tidyverse ×1

vector ×1