Rで数十のデータフレームを作成しましたが、それらすべてをExcelファイルの1つのシートに追加したいと思います。
これが答えを見つけるために私が見た2つのページです(私は10の評判を持っていないので、私が訪れた4つのWebページのURLすべてを貼り付けることはできません):
Rパッケージxlsxを使用してExcelファイルにデータを書き込む 作成者は次のように述べています。「addDataFrame関数のstartRow引数とstartCol引数を使用して、シートの特定の開始位置にデータフレームを追加することもできます。」推奨されるコードは次のとおりです。
workbook.sheets workbook.test addDataFrame(x = sample.dataframe, sheet = workbook.test,
row.names = FALSE, startColumn = 4) # write data to sheet starting on line 1, column 4
saveWorkbook(workbook.sheets, "test.excelfile.xlsx") # and of course you need to save it.
この提案に基づいて、これはRStudioでの私の試みでした。
addDataFrame(df_fl1, sheet = "AllData2.xlsx", startRow = 712)
これはRの出力でした:sheet $ getWorkbookのエラー:$演算子はアトミックベクトルには無効です
私もこのページを試しました:
Excelファイルの読み取りとRへのインポートに関するチュートリアル "ただし、既存のファイルにデータフレームを書き込みたい場合は、次のコマンドを実行できます。"
write.xlsx(df,
"<name and extension of your existing file>",
sheetName="Data Frame"
append=TRUE)
write.xlsx(df_fl3, "AllData2.xlsx", sheetName="Salinity1", append=TRUE)
このコードを試してみたところ、すでにシートにあるデータが上書きされました。データフレームのデータをExcelシートに追加するにはどうすればよいですか?
既存のExcelワークシートに追加するのは少し面倒です。代わりに、すべてのExcelデータファイルをRに読み込み、R内で結合してから、結合された単一のデータフレームを新しいExcelファイルに書き込みます(または、データをExcelに含める必要がない場合はcsvファイルに書き込みます)。ワークブック)。簡単な方法と難しい方法の両方については、以下のコードを参照してください。
簡単な方法:R
ですべての作業を行い、最後に1つの結合されたデータフレームを保存します
たとえば、すべてのExcelデータファイルが現在の作業ディレクトリにあり、各Excelファイルの最初のワークシートにデータが含まれている場合、次の操作を実行できます。
library(xlsx)
# Get file names
file.names = list.files(pattern="xlsx$")
# Read them into a list
df.list = lapply(file.names, read.xlsx, sheetIndex=1, header=TRUE)
次に、それらを1つのデータフレームに結合し、ディスクに書き込みます。
df = do.call(rbind, df.list)
write.xlsx(df, "combinedData.xlsx", sheetName="data", row.names=FALSE)
ハードウェイ:既存のExcelワークシートに連続するデータフレームを追加します
Excelに書き込むデータフレームのリストを作成します(上記で説明したように、実際のユースケースでは、データファイルをRのリストに読み込みます)。ここでは、説明のために組み込みのiris
データフレームを使用します。
df.list = split(iris, iris$Species)
各データフレームを単一のExcelワークシートに書き込むには、まず、Excelワークブックとデータを書き込むワークシートを作成します。
wb = createWorkbook()
sheet = createSheet(wb, "data")
# Add the first data frame
addDataFrame(df.list[[1]], sheet=sheet, row.names=FALSE, startRow=1)
次に、ループを使用して残りのすべてのデータフレームを追加します。次のデータフレームが正しい場所に書き込まれるように、毎回startRow
をインクリメントします。
startRow = nrow(df.list[[1]]) + 2
for (i in 2:length(df.list)) {
addDataFrame(df.list[[i]], sheet=sheet, row.names=FALSE, col.names=FALSE,
startRow=startRow)
startRow = startRow + nrow(df.list[[i]])
}
ブックを保存します。
saveWorkbook(wb, "combinedData.xlsx")
addDataFrame
は、Excelワークシートのさまざまな部分にさまざまなサマリーテーブルをレイアウトし、すべてをプレゼンテーションに適したものにしたい場合に便利です。ただし、生データを1つのデータファイルに結合するだけの場合は、Rですべての作業を実行し、結合したデータフレームを最後にExcelワークシート(またはcsvファイル)に書き込む方がはるかに簡単だと思います。
あなたが言及した元のエラーを回避するには:
Sheet $ getWorkbookのエラー:$演算子はアトミックベクトルには無効です
あなたはこれを試すことができます:
wb <- loadWorkbook("<name and extension of your existing file>")
addDataFrame(df,getSheets(wb)$<sheetname>, startRow = 712)
saveWorkbook(wb, <filename>)