1

間違った検索用語を使用している可能性があります。または、これは実際には不可能です。

ddply を使用して、多くのグラフを出力します。これを行う関数では、これらすべてのプロットが最終的に配置されるサブディレクトリを作成したいと思います。

これ自体は問題ありません。しかし、ディレクトリ名を追加の入力パラメーターとして渡す代わりに、関数が ddply したデータフレームの名前を何らかの方法で読み取るようにしたいと思います。

これまでのところ、私はこのアプローチを使用しています:

myplotfunction <- function(x,df_name){
      p=ggplot (...)
      ggsave(file.path(getwd,df_name,paste0(x$name,".png"),plot=p)
}

ddply(mydfIddplyUpon,.(name),myplotfunction,df_name="mydfIddplyUpon")

しかし、plyr で分割された df の名前を見つける関数を取得できれば、はるかに便利になります。

4

1 に答える 1

3

ラッパー関数を作成できます。

nddply <- function(x, var, fun, ...){
  xn <- deparse(substitute(x))
  plyr::ddply(x, var, fun, ..., directory_name = xn)
}

# where fun is your function that needs a directory_name
fun <- function(a, directory_name, ...)
  paste(nrow(a),  directory_name, ...)

nddply(iris, "Species", fun, sep=", from: ")

編集:これはプロットを保存する例です

nd_ply <- function(x, var, fun, ...){
  xn <- deparse(substitute(x))
  plyr::d_ply(x, var, fun, ..., directory_name = xn)
}

fun <- function(a, directory_name, ...)
  ggsave(paste0(directory_name, unique(a$Species), ".pdf"), 
         ggplot(a, aes_string(x="Sepal.Length", y="Sepal.Width", ...))+ geom_point())

nd_ply(iris, "Species", fun, colour="Sepal.Length")
于 2013-11-03T23:38:10.617 に答える