使用dplyr进行探索性绘图

时间:2014-09-25 16:20:45

标签: r plyr dplyr

我经常使用d_ply来制作探索性地块。

一个简单的例子:

require(plyr)

plot_species <- function(species_data){
  p <- qplot(data=species_data,
        x=Sepal.Length,
        y=Sepal.Width)
  print(p)

}

d_ply(.data=iris,
      .variables="Species",
      function(x)plot_species(x))

产生三个独立的地块,每个物种一个。

我想使用dplyr中的函数重现此行为。

这似乎需要在summaryrize调用的函数中重新组装data.frame,这通常是不切实际的。

require(dplyr)

iris_by_species <- group_by(iris,Species)

plot_species <- function(Sepal.Length,Sepal.Width){

  species_data <- data.frame(Sepal.Length,Sepal.Width)

  p <- qplot(data=species_data,
             x=Sepal.Length,
             y=Sepal.Width)
  print(p)

}


summarise(iris_by_species, plot_species(Sepal.Length,Sepal.Width))

可以将data.frame的某些部分直接传递给通过汇总调用的函数,而不是传递列吗?

1 个答案:

答案 0 :(得分:7)

我相信您可以使用do中使用的相同功能与d_ply一起完成此任务。它将直接打印到绘图窗口,但如果使用命名参数,还会将结果保存为list data.frame中的情节(请参阅帮助页面,这与使用dlply基本相似)。我没有完全掌握do可以做的所有事情,但如果我不使用命名参数,我会收到一条错误消息,但是这些图仍会打印到绘图窗口(在RStudio中)。 / p>

plot_species <- function(species_data){
  p <- qplot(data=species_data,
        x=Sepal.Length,
        y=Sepal.Width)
  print(p)

}

group_by(iris, Species) %>%
    do(plot = plot_species(.))