3

数百の散布図の生成を自動化したいのですが、サブセット化を処理するコンパクトな方法ではうまくいきません。データ フレームには、対象となる 3 つのフィールドがあります。

site           code            value

1              x                30
1              y                14
1              z                12
2              x                35
2              y                19

等、

ここで、サイト = 数値、値 = 数値、コード = グループ化変数。

約 400 のサイトと 300 のコードがあります。

私が欲しいもの:

  1. field =code に基づいて df をサブセット化します
  2. x=サイト vs y=値を散布図としてプロット
  3. 各散布図を .pdf の個別のページに書き込む
  4. プロセスを自動化する

コメントをお待ちしております。たとえば、このアプローチでは、'subset' must evaluate to logical というエラーが生成されます。ラップリーコールも機能しない場合があります。

dfarray<-list(subset(df,df[,2]))
pdf(file="test.pdf")
figures<-lapply(dfarray, function(i) {(plot(i$[,1],i$[,3]))
})
dev.off()

どうもありがとう

d_ply を組み込むとうまくいきました。この結果には満足していますが、X、Y 軸のラベル ステートメントの何が問題なのか誰か指摘できますか? (注: このコード ブロックは、サブセットごとに 1 つの pdf になります)

names(df)<-tolower(names(df))
names(df)
d_ply(df,"code",function(x){
pdf(file=paste(unique(x$code),".pdf"))
plot(data=x,value~site, xlab=names(x[1]),ylab=as.name(x$code))
dev.off()
})

更新: 以下は、データフレーム df が存在すると仮定した場合の、このコードの 2 つの機能バージョンです。これは、各グループの散布図を個別の .pdf に書き込みます。

names(df)<-tolower(names(df)
names(df)
d_ply(df,"code",function(x){
pdf(file=paste(unique(x$code),".pdf"))
plot(data=x, value~site, xlab=names(df[1]),ylab=unique(x$code))
dev.off()
})

これは、グループごとに 1 つずつ、すべての散布図を 1 つの .pdf に書き込みます。

names(df)<-tolower(names(df)
names(df)
pdf(file="df_all.pdf")
d_ply( df, "code", function(x) {
plot(data=x, value~site, xlab=names(df[1]), ylab=unique(x$code))
})
dev.off()
4

1 に答える 1

3

私は一緒に行きplyr::d_plyます:

library(plyr)
pdf(file="test.pdf")
d_ply( df.1, "code", function(x) plot( data = x, value~site, main = unique(x$code) ) )
dev.off()

split-apply-(combine) 戦略について一般的に読みたいと思うかもしれません。

于 2013-05-29T23:46:30.410 に答える