小编Jas*_*ter的帖子

ggplot 的每个方面都有不同的 `geom_hline()`

刻面

library(tidyverse)
ggplot(mpg, aes(cty, hwy)) + 
  geom_point() + 
  facet_grid(year ~ fl) + 
  geom_hline(yintercept = mean(mpg$hwy))
Run Code Online (Sandbox Code Playgroud)

我希望geom_hline()上面显示的方面中的每个都是仅包含在该方面中的点的平均值。我认为我可以用(如下)之类的东西来做到这一点。但这不起作用。我很接近,对吧?

library(tidyverse)
ggplot(mpg, aes(cty, hwy)) + 
  geom_point() + 
  facet_grid(year ~ fl) + 
  geom_hline(yintercept = mean(mpg %>% group_by(year, fl)$hwy))
Run Code Online (Sandbox Code Playgroud)

r ggplot2 dplyr

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

R中的Sankey图与networkD3 - 行号问题

sankey图

我想重点关注上面的流程,将蓝色的"热量发电"块连接到粉红色的"电网"块.你会注意到流量是526 TWh,这是#62行Energy$links.

Energy$links
   source target   value
...
62     26     15 525.531
...
Run Code Online (Sandbox Code Playgroud)

现在让我们关注引用节点的sourcetargetEnergy$nodes.

Energy$nodes
                             name
...
15        Heating and cooling - homes
16                   Electricity grid
...
26                       Gas reserves
27                 Thermal generation
...
Run Code Online (Sandbox Code Playgroud)

source当它实际引用节点数据的行"27"时,该值为"26".当实际引用节点数据的行"16"时,目标值为"15".为什么链接数据中的源和目标值实际上是指节点数据中的行 x-1而不是x?除了在构建这些Sankey图时在我头脑中执行x - 1计算时,还有什么方法吗?

这是完整的Energy数据:

> Energy
$`nodes`
                                 name
1                Agricultural 'waste'
2                      Bio-conversion
3                              Liquid
4                              Losses
5                               Solid
6                                 Gas
7                     Biofuel imports
8                     Biomass imports
9 …
Run Code Online (Sandbox Code Playgroud)

r sankey-diagram networkd3 htmlwidgets

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

使用 R 包 openxlsx 将样式应用到整个 Excel 工作表

我正在使用名为openxlsx的 R 包。我已经创建了AlignStyle如下所示的内容。我想将此样式应用于标题为“test-sheet”的整个工作表。当我尝试将此样式应用于 Excel 工作表的所有行和所有列时,我得到一个Error in 1:Inf : result would be too long a vector.

# Define a style
AlignStyle <- createStyle(halign = "CENTER", valign = "TOP")

# Apply the style
addStyle(wb, "test-sheet", style = AlignStyle, rows = 1:Inf, cols = 1:Inf, gridExpand = TRUE)
Run Code Online (Sandbox Code Playgroud)

我知道我可以做类似的事情rows = 1:nrows(df),但我的数据框的名称并不总是df

您知道我可以使用openxlsx R 包将样式应用到整个工作表或整个工作簿的另一种方法吗?

excel r openxlsx

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

如何在 R Markdown 块中转义 SQL 代码中的字符?

```
{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(tidyverse)
library(odbc)
library(DBI)
library(dbplyr)
```

```{sql, connection=con, output.var="df"}
SELECT DB_Fruit.Pear, Store.Name, Cal.Year, Sales.Qty FROM DB_Fruit
```
#> Error: unexpected symbol in "SELECT DB_Fruit.Pear"
Run Code Online (Sandbox Code Playgroud)

我正在尝试在 R Markdown 块中运行 SQL 代码,如上所示。我收到上面显示的“意外符号”错误。\_我最好的猜测是我需要用诸如或 之类的东西来转义下划线,\\_但这些都不会让我的错误消失。

如果我使用 DBI 进行查询(如下所示),则不会收到任何错误:

df <- dbGetQuery(con,'
  SELECT DB_Fruit.Pear, Store.Name, Cal.Year, Sales.Qty 
  FROM DB_Fruit
')
Run Code Online (Sandbox Code Playgroud)

也许该dbGetQuery函数能够_正确解释下划线等内容,而常规 R Markdown 解析器却不能?或者也许有空格被复制/粘贴为一些奇怪的 unicode 字符,这些字符再次被dbGetQuery函数能够解释,而常规 R Markdown 解析器却不能?

可能的罪魁祸首是什么?我该怎么办?

sql r dbi r-markdown dbplyr

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

如何在我的 blogdown 网站的主页上发布一些介绍性段落?

我的 blogdown 网站的首字母menu直接取自blogdown 书

\n\n
[[menu.main]]\n    name = "Home"\n    url = "/"\n    weight = 1\n[[menu.main]]\n    name = "About"\n    url = "/about/"\n    weight = 2\n[[menu.main]]\n    name = "GitHub"\n    url = "https://github.com/rstudio/blogdown"\n    weight = 3\n[[menu.main]]\n    name = "CV"\n    url = "/vitae/"\n    weight = 4\n[[menu.main]]\n    name = "Twitter"\n    url = "https://twitter.com/rstudio"\n    weight = 5\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的网站的索引会自动填充我通过添加的任何帖子Addins > New Post。如果我更改index.Rmd主项目目录中的文件(如下所示),我的前端登陆“主页”上不会发生任何更改不会发生任何更改。

\n\n
\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 archetypes/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 content/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 data/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 layouts/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 public/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 ...\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 config.toml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 index.Rmd\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 my-website.Rproj\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的index.Rmd …

r r-markdown hugo toml blogdown

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

将颜色酿造器应用于ggplot中的单行

library(tidyverse)
library(RColorBrewer)
mtcars %>% 
  count(cyl) %>% 
  ungroup() %>% 
  ggplot(aes(cyl, n)) + 
  geom_line(size = 3) + 
  scale_color_brewer(palette = "Accent")
Run Code Online (Sandbox Code Playgroud)

我经常会有一系列带有颜色主题的图表scale_color_brewer(palette = "Accent")。我想在所有图表上的整个.Rmd文件中都维护此主题。但是,这scale_color_brewer()仅在每个图上有多条线时才有效。

对于上述情况(单行),如果不scale_color_brewer(palette = "Accent")指定唯一颜色作为参数,则如何应用geom_line()?我希望有比手动过程更好的解决方案。使用不同的主题并必须查找所有不同的CMYK值会变得很乏味。

r ggplot2 colorbrewer

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

如何在生成的 PowerPoint 中显示 R 数据框

---
title: "Untitled"
output: powerpoint_presentation
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```

## Table

```{r table, echo=FALSE, message=FALSE, warning=FALSE}
library(tidyverse)
library(kableExtra)
mtcars %>% 
  count(cyl) %>% 
  ungroup()  # %>%
  # kable() %>%
  # kable_styling()
```
Run Code Online (Sandbox Code Playgroud)

我正在处理上面的repro。我想以 kable 或 kableExtra 方式呈现 mtcars 计算的数据框,如下所示:

kableExtra

相反,表格以以下控制台格式输出:

## # A tibble: 3 x 2
##     cyl     n
##   <dbl> <int>
## 1     4    11
## 2     6     7
## 3     8    14
Run Code Online (Sandbox Code Playgroud)

如何使我的 R PowerPoint 表格更漂亮,甚至更好,可在 PowerPoint 中编辑?

powerpoint r r-markdown officer kableextra

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

为什么 tidyr `complete()` 在 R 中没有完成?

complete.test <- tibble(col1 = c("a", "a", "b", "b"),
                        col2 = c(as.Date("2019-01-01"),
                                 as.Date("2019-01-02"),
                                 as.Date("2019-01-03"),
                                 as.Date("2019-01-04")),
                        col3 = runif(4),
                        col4 = runif(4))
complete.test %>% complete(col1, col2)
#> # A tibble: 8 x 4
#>   col1  col2         col3   col4
#>   <chr> <date>      <dbl>  <dbl>
#> 1 a     2019-01-01  0.154  0.143
#> 2 a     2019-01-02  0.746  0.526
#> 3 a     2019-01-03 NA     NA    
#> 4 a     2019-01-04 NA     NA    
#> 5 b     2019-01-01 NA     NA    
#> 6 b     2019-01-02 NA     NA    
#> 7 b …
Run Code Online (Sandbox Code Playgroud)

r tidyr

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

R 将 NA 替换为除 * 之外的所有列

library(tidyverse)
df <- tibble(Date = c(rep(as.Date("2020-01-01"), 3), NA),
             col1 = 1:4,
             thisCol = c(NA, 8, NA, 3),
             thatCol = 25:28,
             col999 = rep(99, 4))
#> # A tibble: 4 x 5
#>   Date        col1  thisCol thatCol col999
#>   <date>     <int>    <dbl>   <int>  <dbl>
#> 1 2020-01-01     1       NA      25     99
#> 2 2020-01-01     2        8      26     99
#> 3 2020-01-01     3       NA      27     99
#> 4 NA             4        3      28     99
Run Code Online (Sandbox Code Playgroud)

我实际的 R 数据框有数百列,这些列的命名并不明确,但可以通过df上面的数据框进行近似。

我想用 替换所有值,NA但 …

select r tidyr tidyselect

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

ggplot 标签“K”代表数千或“M”代表百万(保持“逗号”y 轴标签)

library(tidyverse)
df <- mpg %>% head() %>% mutate(hwy = hwy * 10000)
ggplot(df, aes(cty, hwy)) + 
  geom_point() + 
  scale_y_continuous(label = scales::comma) +
  geom_text(aes(label = hwy), hjust = -0.25)
Run Code Online (Sandbox Code Playgroud)

我希望该图上的标签使用“K”表示数千(例如260K代替260000)。但是 - 我想保持 y 轴不变,并使用逗号(例如260,000)。我怎样才能实现这个目标?

geom 文本需要千但有逗号

r ggplot2

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