1

このdataFrameが与えられた場合:

   years random_numbers
1   2003            -24
2   2004            152
3   2005             23
4   2006             73
5   2007             80
6   2008             85
.   ....             ..

データフレームを生成するコード:

years = c(rep(2003:2012,4))
random_numbers = as.integer(rnorm(40)*100)
testDF = data.frame(years, random_numbers)

どうすればffを生成できますか。テキストファイル:

  • 2003.txtには、-24、3、88などの番号が含まれています。
  • 2004.txtには、152、67、100などの番号が含まれています。

私は何をすべきか少し迷っています。何年も要因にして、どういうわけかそれを組み合わせることを考えています

write.table(???, ???, append = T, row.names = F,  col.names = T)
4

2 に答える 2

2

plyrこれをd_ply簡単にします。

ファイルを書き込む関数を定義します。

myfun <- function(x) {
  filename <- paste0(unique(x$years), '.txt')
  write.table(x$random_numbers, filename, row.names=F, col.names=T)
}

次に、次のように呼び出しますd_ply

d_ply(testDF, .(years), myfun)

ただし、これには注意してください...現在の作業ディレクトリに大量のファイルを静かに書き込むためです!

于 2012-08-22T22:20:45.657 に答える
2
 sapply(testDF$years, function(x) 
    write.table(testDF[testDF$years==x,], file=paste(x, "txt", sep=".") )
    )

append=T を設定したくないでしょう。サブセットを使用することもできます:

sapply(testDF$years, function(x) 
    write.table(subset( testDF, years==x), file=paste(x, "txt", sep=".") )
    )
于 2012-08-22T23:48:01.057 に答える