3

私のコードは次のとおりです。

x<-read.table('1')
y<-read.table('2')
z<-read.table('2')

MyFunc<-function (data){
  plot(data[1]~data[2])
  title(main=substitute(data))
  data.new <- some.manipulations(data)
  write.csv(data.new,file=paste(substitute(data),".csv",sep=""))
}

my.list <- list(x,y,z)
lapply(mylist,MyFunc)

これで、25 ほどの異なるテーブルのグラフと .csv ファイルを生成したいと考えています。個別に呼び出すと正常に動作します-たとえば、次を実行すると:

MyFunc(x)

「x」というタイトルのグラフとファイルx.csvを取得します私の問題は、これを何度も行う必要があることです.すべてのテーブルをリストに入れてlapplyまたはsapplyを使用しようとすると、各テーブルの名前が失われます空白の.csv は有効なファイル名ではないため、グラフにはタイトルがなく、ファイルは作成されません。また、オブジェクトを連結しようとしました:

my.list <- c(x,y,z)

これにより、同じ問題が発生しました。どんな助けでも大歓迎です!

4

1 に答える 1

3

このようなものを処理する通常の方法は、目的の名前も関数に送信することです。この場合、リスト内の要素に目的の名前を付けると役立つ場合があります。おそらく次のようなものです:

f <- c('1', '2', '3')
d <- lapply(f, read.table)
names(d) <- f # optionally some other names

MyFunc <- function(dat, nam) {
  plot(dat[1]~dat[2])
  title(main=nam)
  dat.new <- some.manipulations(dat)
  write.csv(dat.new, file=paste(nam, ".csv", sep=""))
}

lapply(names(d), function(n) MyFunc(d[[n]], n))
于 2012-06-20T18:10:30.293 に答える