小编Ros*_*oss的帖子

在构面之间更改配色方案

我有一个data.frame,类似于以下内容:

set.seed(100)

df <- data.frame(year = rep(2011:2014, 3), 
                 class = rep(c("high", "middle", "low"), each = 4), 
                 age_group = rep(1:3, each = 4), 
                 value = sample(1:2, 12, rep = TRUE))
Run Code Online (Sandbox Code Playgroud)

我希望通过facet-ing(通过变量age_group)生成三个与以下代码生成的图相似的图:

library(ggplot2)
blue <- c("#bdc9e1", "#74a9cf", "#0570b0")
ggplot(df) + geom_bar(aes(x = year, y = value, 
                          fill = factor(class, levels = c("high", "middle", "low"))), 
                      stat = "identity") + 
  scale_fill_manual(values = c(blue)) +
  guides(fill = FALSE)
Run Code Online (Sandbox Code Playgroud)

但是,每个方面都有不同的配色方案,其中所有颜色均由我自己指定。

我似乎想要这里发生的事情的更特定版本:ggplot2:更改条形图中每个方面的颜色

因此,使用我提供的数据,我希望获得三个多面图,并按age_group每个图的填充级别(由的水平)划分class,所有颜色(总共9种)将由我自己指定。

编辑:为澄清起见,以下代码的确提供了我想最终涉及的方面:

ggplot(df) + …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

Map() 和 dplyr 连接

我有两个列表,两个列表都包含对应于不同年份的相似数据集。我希望逐个元素合并两个列表中的数据集。当我在变量名称不匹配并且需要使用参数的情况下使用 ,mapply并排​​时,R 无法执行连接。dplyr::full_joinby

library(dplyr)
set.seed(100)

first_list <- list(data.frame(x = 1:3, y = rnorm(3)), 
                   data.frame(x = 4:6, y = rnorm(3)))

second_list <- list(data.frame(z = 1:3, w = rnorm(3)), 
                    data.frame(z = 4:6, w = rnorm(3)))

Map(full_join, by = c("x" = "z"), first_list, second_list)
#Error: 'z' column not found in rhs, cannot join
Run Code Online (Sandbox Code Playgroud)

然而,

Map(function(x, y) full_join(x, y, by = c("x" = "z")), first_list, second_list)
Run Code Online (Sandbox Code Playgroud)

工作成功。我对这种行为很好奇,想知道是否有人可以提供一些解释。

r mapply dplyr

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

标签 统计

r ×2

dplyr ×1

ggplot2 ×1

mapply ×1