gpt4 book ai didi

r - 如何在lapply函数中切片数据

转载 作者:行者123 更新时间:2023-12-04 13:30:24 25 4
gpt4 key购买 nike

我想在带有grid.arrange的网格上排列N ggplot(每个面都是多面的)。

library(tidyverse)
library(ggplot2)
library(gridExtra)


plots <- lapply(unique(mtcars$cyl), function(cyl) {
data <- mtcars %>% filter(cyl == cyl)
ggplot(data, aes(x=mpg, y=hp))+
geom_point(color = "blue")+
facet_wrap(.~carb)}) %>%
do.call(grid.arrange, .)
do.call(grid.arrange, plots )

问题在于,所有图都基于整个数据集,并且它们呈现相同的图,而当我在行中对其进行过滤时,它们应该保持不同
data <- mtcars %>% filter(cyl == cyl)

最佳答案

filter处理的cyl过于字母化并被视为字符串,因此整个数据集的cyl==cyl为TRUE。您可以通过使用!!取消对cyl的引用来解决此问题,或者在函数中使用另一个变量名,例如x

#Option 1
data <- mtcars %>% filter(cyl == !!cyl)
#Option 2
... function(x) {
data <- mtcars %>% filter(cyl == x)
...

关于r - 如何在lapply函数中切片数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56270112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com