3

テーブルをRからExcelにコピーして貼り付けようとしています。前の質問からの次のコードを検討してください。

    data <- list.files(path=getwd())
    n <- length(list)
    for (i in 1:n) 
     {
      data1 <- read.csv(data[i])
      outline <- data1[,2]
      outline <- as.data.frame(table(outline))
      print(outline)   # this prints all n tables
      name <- paste0(i,"X.csv")
      write.csv(outline, name)
      }

このコードは、各テーブルを個別のExcelファイル(つまり、「1X.csv」、「2X.csv」など)に書き込みます。前のテーブルを毎回書き換える代わりに、各テーブルをいくつかの行に「シフト」する方法はありますか?私もこのコードを試しました:

 output <- as.data.frame(output)
 wb = loadWorkbook("X.xlsx", create=TRUE)
 createSheet(wb, name = "output")
 writeWorksheet(wb,output,sheet="output",startRow=1,startCol=1)
 writeNamedRegion(wb,output,name="output")
 saveWorkbook(wb)

ただし、これはデータフレームをExcelに正確にコピーしません。

4

2 に答える 2

5

コメントで述べたように、最初にRのデータフレームをマージしてから、それらを(1つの)出力ファイルに書き込む方法があると思います。

# get vector of filenames
filenames <- list.files(path=getwd())

# for each filename: load file and create outline
outlines <- lapply(filenames, function(filename) {
  data <- read.csv(filename)
  outline <- data[,2]
  outline <- as.data.frame(table(outline))
  outline
})

# merge all outlines into one data frame (by appending them row-wise)
outlines.merged <- do.call(rbind, outlines)

# save merged data frame
write.csv(outlines.merged, "all.csv")
于 2013-02-28T15:03:06.383 に答える
4

Microsoft が信じてほしいことにもかかわらず、.csv ファイルは Excel ファイルではなく、Excel や他の多くのプログラムで読み取ることができる一般的なファイル タイプです。

最善のアプローチは、本当にやりたいことによって異なります。すべてのテーブルを Excel の 1 つのワークシートに読み込みますか? もしそうなら、または他の関数appendへの引数を使用して単一のファイルに書き込むことができます。write.csvまたは、開いたままにしておく接続を使用して、新しい接続がそれぞれ追加されるようにします。catそれぞれの新しいテーブルの前に、いくつかの改行を入れたいと思うかもしれません。

2 回目の試行では、XLConnect パッケージを使用しているように見えます (しかし、あなたは言わないので、別のものである可能性があります)。これが最善のアプローチだと思いますが、結果は期待したものとどのように異なりますか?

于 2013-03-01T01:45:01.040 に答える