- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想根据我的响应变量
为数值列
创建ggplots
。
这是可重现的代码:
test = mpg %>% select_if(is.numeric) %>%
dplyr::select(-year) %>% nest(-cyl) %>%
mutate(ggplots = map(data,~ggplot(data = .x) + geom_point(aes(x = cyl, y = .x))))
test
# A tibble: 4 x 3
cyl data ggplots
<int> <list<df[,3]>> <list>
1 4 [81 x 3] <gg>
2 6 [79 x 3] <gg>
3 8 [70 x 3] <gg>
4 5 [4 x 3] <gg>
Warning message:
All elements of `...` must be named.
Did you want `data = c(displ, cty, hwy)`?
收到错误:
test$ggplots[[1]]
Don't know how to automatically pick scale for object of type tbl_df/tbl/data.frame. Defaulting to continuous.
Error: Aesthetics must be either length 1 or the same as the data (81): x, y
怎么了?
最佳答案
当我们想要循环遍历一堆变量并根据另一个变量绘制每个变量时,一个选择是循环遍历变量名称。
我首先会在 y
上提取我想要的变量名称。我在管道末尾使用 set_names()
来用其自身命名向量,因为有时我需要它来进行稍后的组织。
vars = mpg %>%
select_if(is.numeric) %>%
select(-cyl, - year) %>%
names() %>%
set_names()
结果是一个字符串向量。
vars
# displ cty hwy
# "displ" "cty" "hwy"
现在我可以循环遍历这些变量名称,并针对固定的 x
变量 cyl
绘制图表。我将为此使用 purrr::map() 循环。由于我正在使用字符串,因此我需要在 ggplot() 中使用整洁的评估,使用 .data 代词完成(我相信这仅适用于最新的 0.4.0发布rlang)。我用 labs()
中的变量标记 y 轴,否则它在轴标签中具有 .data
代词。
plots = map(vars, ~ggplot(data = mpg) +
geom_point(aes(x = cyl, y = .data[[.x]]) ) +
labs(y = .x)
)
我演示了上面的方法in a blog post I wrote last year如果您有兴趣了解更多解释。
如果您不想像这样循环遍历字符串,另一种选择是将数据集 reshape 为长格式,然后使用嵌套方法。这个想法是创建一个长数据集,在 y 轴上获取所需的变量并将它们的值全部放在一列中。我使用 tidyr::pivot_longer()
来完成此操作。 y
变量的数值现在位于名为 value
的单列中。
然后为每个变量名称嵌套 cyl
和 value
列。完成后,您将拥有一个三行数据集,每个 y 变量一行,您可以在 mutate() 中循环数据集以创建绘图列正如您最初的尝试一样。
plots2 = mpg %>%
select_if(is.numeric) %>%
dplyr::select(-year) %>%
pivot_longer(cols = -cyl) %>%
nest(data = -name) %>%
mutate(ggplots = map(data,
~ggplot(data = .x) + geom_point(aes(x = cyl, y = value)))
关于r - 使用 purrr map 打印 ggplot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58204452/
背景 我有一个问题,可能有多种解决方案,但我相信有一个尚未发现的优雅解决方案利用 purrr。 示例代码 我有一个如下的大数据框,为此我在下面提供了一个示例: library(tibble) libr
我正在尝试使用 purrr 的 modify_in 来修改列表的元素。列表示例: tib_list [[1]] #> # A tibble: 5 x 3 #> col_one col_two c
我正在努力了解 purrr,但我正在为一些本应很容易的事情而苦苦挣扎。 假设我有以下男性和女性数据 n 0, "M", "F")), value = rnorm(n) ) 现在,我要计算值列的以下
我想对“ID”以外的所有列应用 Blom 转换。由于它们都是数字,map_if 和 is.numeric 在这里不起作用。 library(rcompanion) data("mtcars") # G
考虑以下数据框列表: library(tidyverse) df1 % set_names(paste0("df", 1:4)) 如果不是这样,我想将 A 和 B 的元素连接到 B 列中。请注意,
我正在尝试使用 purrr对具有相同索引的列表元素求和。这可以使用以下方法在基础 R 中实现: xx % reduce(sum)返回单个值。有谁知道在 purrr 中执行此操作的语法吗? ? 编辑-我
我有类似于df3的数据。要重现数据,请运行以下命令: vec1 % group_by(A) %>% nest() df2 % left_join(df2, by = "A") 我需要使用这样的
我搜索了 ??"~"但这只能指向 rlang::env_bind (大概是 %<~% )和 base::~ .在 RStudio 中,如何找到 Purrr 的 ~的文档?例如,如果我忘记了如何使用 ~
这个问题在这里已经有了答案: Repeat each row of data.frame the number of times specified in a column (9 个回答) 10 个月
我有以下数据框列表,其中包含名为 cyl 的列 # Create 3 dataframes with identical column names mt_list [[1]] #>
我正在查看使用map的example。这里是: mtcars %>% split(.$cyl) %>% # from base R map(~ lm(mpg ~ wt, data = .))
我没有看到任何关于我的问题。我想,当我看到 purrr 很多模型示例时,如何再次使用在数据上创建的模型?一点点代码会告诉你我在追求什么: 这是基本的gapminder许多模型示例。 library(g
这是一个嵌套数据。 df1 % group_by(group) %>% nest() 我需要使用 purrr:map 运行 lm。 map(df2$data, ~lm(A~B, data=.x)) 找
我有一个命名列表,在该列表中我想根据列表的来源名称重命名它们的列。 我的方法的问题似乎是 .x 占位符,我认为它是我唯一的列表名称。但在 rename_with 函数中,.x 似乎是在每个列表数据框中
给定一个 dataframe,比如 iris 默认值,如何配置 purrr::map_dfr() 函数在 的每一行上运行code>dataframe 并执行函数 foo。 这是我的 df 的一行,请注
感谢这个网站,我使用 R purrr 包来聚合基于多列的数据。聚合按我想要的方式工作,但输出却不然。以下是使用 mtcars 数据集的示例。 library(dplyr) library(purrr)
这是一个嵌套数据。 df1 % group_by(group) %>% nest() 我需要使用 purrr:map 运行 lm。 map(df2$data, ~lm(A~B, data=.x)) 找
我有一个命名列表,在该列表中我想根据列表的来源名称重命名它们的列。 我的方法的问题似乎是 .x 占位符,我认为它是我唯一的列表名称。但在 rename_with 函数中,.x 似乎是在每个列表数据框中
给定一个 dataframe,比如 iris 默认值,如何配置 purrr::map_dfr() 函数在 的每一行上运行code>dataframe 并执行函数 foo。 这是我的 df 的一行,请注
也许我遗漏了一些明显的东西,但我试图将 R 中命名列表的命名列表(甚至可能更多嵌套)扁平化为最终一个扁平列表。 purrr和 rlist似乎有工具。我怎样才能实现子列表的名称成为扁平结果列表的名称预加
我是一名优秀的程序员,十分优秀!