現在、openxlsx
を使って1つのシートに複数のデータフレームを作成しています。私はこのシートにデータフレームを書きたいと思っています。分析するシートをすべて1枚にしたいので、10枚にする必要はありません。次のようにxlsxに書き込むときに列開始更新関数を書く方が良い
私のおもちゃのデータセットが見えます:
> random_dat
Letters Count Letters.1 Count.1 Letters.2 Count.2 Final
1 A 1 A1 0.21477659 Z 10 Z10
2 A 2 A2 0.92217670 X 12 X12
3 A 3 A3 0.49196523 T 14 T14
4 B 1 B1 0.08086314 Y 16 Y16
5 B 2 B2 0.80177983 Z 18 Z18
6 A 4 A4 0.35970442 X 20 X20
7 B 3 B3 0.21102868 T 22 T22
8 C 1 C1 0.75816713 Y 24 Y24
9 C 2 C2 0.59261425 Z 26 Z26
10 D 1 D1 0.73484393 X 28 X28
11 A 5 A5 0.32830008 T 30 T30
12 C 3 C3 0.21672748 Y 32 Y32
は今、私は私のワークブックおよびワークシートを作成し、私の
xlsx
ファイルに書き込まれます3異なる
data.frames
を作成します。
library(openxlsx)
wb <- createWorkbook()
addWorksheet(wb,sheetName = "Output")
df1 <- random_dat[,1:2]
df2 <- random_dat[,2:3]
df3 <- random_dat[,3:7]
私は今、自分のファイルにこれらの書き込みを開始する準備ができています:
writeData(wb, sheet = "Output", df1, startCol = 1, startRow = 1, xy = NULL,
colNames = TRUE, rowNames = FALSE, headerStyle = NULL, withFilter = FALSE,
keepNA = FALSE)
start_col <- 1
start_col <- start_col+dim(df1)[2]+1
writeData(wb, sheet = "Output", df2, startCol = start_col, startRow = 1, xy = NULL,
colNames = TRUE, rowNames = FALSE, headerStyle = NULL, withFilter = FALSE,
keepNA = FALSE)
start_col <- start_col+dim(df1)[2]+1
writeData(wb, sheet = "Output", df1, startCol = start_col, startRow = 1, xy = NULL,
colNames = TRUE, rowNames = FALSE, headerStyle = NULL, withFilter = FALSE,
keepNA = FALSE)
start_col <- start_col+dim(df1)[2]+1
saveWorkbook(wb, "output.xlsx")
あなたが見ることができるように、各書き込みの後、私はデータのdim()
を使用して開始列を更新してのとして1を追加空の列をdata.frames
の間に置きます。
は、たとえば、入力として、最後に書き込まれdata.frame
を取得して、簡単な方法で、私のために列カウンタ変数を更新することができ、グローバル関数を作成するための簡単な方法がイマイチ:テストされていない何か
update_col<-function(df,envir = .GlobalEnv)
{
if(!("start_col" %in% ls())) start_col<<-1
start_col<<-start_col + dim(df)[2]
}
update_col(df1)
おかげで、これは私が保存していて、私が望んでいたまさにです私のデータフレームをリストオブジェクトに渡し、ここでこの関数を適用することができます –