我经常使用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的某些部分直接传递给通过汇总调用的函数,而不是传递列吗?
答案 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(.))