使用purrr相互绘制多个项目

时间:2017-09-15 13:25:14

标签: r ggplot2 purrr

我正在尝试从purrr中学习tidyverse 我已经设置了一段代码来尝试将虹膜数据集中的所有变量相互映射,以查看它们是否是线性相关的。不幸的是,除了空白的情节,我似乎没有得到任何回报。以下是我的例子。任何人都可以帮忙

library(tidyverse)

mydf <- iris %>% 
  as_tibble %>% 
  dplyr::select(everything(), -Species)

# Create a grid of names of columns
mynames <- names(mydf)  
mygrid <- expand.grid(x=mynames, y =mynames) 

# Define function 
plot_my_data <- function(mydata, x, y){
  ggplot(mydata, aes(x, y)) +
    geom_smooth()}

map2(.x = mygrid$x,
     .y = mygrid$y,
     .f = ~ plot_my_data(mydf, .x,.y))

1 个答案:

答案 0 :(得分:4)

您的代码中有2个问题。

第一个是你使用aes你应该使用aes_string,其次是你有因素而不是mygrid中的字符。

这有效:

mygrid <- expand.grid(x=mynames, y =mynames,stringsAsFactors = F) 

# Define function 
plot_my_data <- function(mydata, x, y){
  ggplot(mydata, aes_string(x, y)) +
    geom_smooth()}

map2(.x = mygrid$x,
     .y = mygrid$y,
     .f = ~ plot_my_data(mydf, .x,.y))