【问题标题】:Using dplyr for exploratory plots使用 dplyr 进行探索性绘图
【发布时间】:2014-09-25 16:20:45
【问题描述】:

我经常使用 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 中的函数重现此行为。

这似乎需要在 summarise 调用的函数中重新组装 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 的一部分是否可以直接传递给 summarise 调用的函数,而不是传递列?

【问题讨论】:

    标签: r plyr dplyr


    【解决方案1】:

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

    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(.))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 2019-07-26
      • 1970-01-01
      • 2022-01-08
      相关资源
      最近更新 更多