2017-12-30 44 views
0

データフレームのリストを使用してxlsxファイルを作成する必要があります。私はこの解決策を見つけたopenxlsx solution、以下を参照(または5番目の回答Syed)。しかし、私のリストには51個の名前付きデータフレームがありますが、データフレームの長いリストの場合、以下にどのような変更を加えますか?私の作成したExcelファイルは開かないからです。リスト内のデータフレームをxlsxに名前付きシートでエクスポートする

require(openxlsx) 
list_of_datasets <- list("Name of DataSheet1" = dataframe1, "Name of Datasheet2" = dataframe2) 
write.xlsx(list_of_datasets, file = "writeXLSX2.xlsx") 

私は(リスト名、=「ファイル」)write.xlsxを実行しようとした、コマンドが正常に実行されたとのxlsxファイルを作成し、それを開いている間、それはエラーアップスロー「ファイルを開くことができませんMicrosoft Excelをそれは腐敗しているからです "。私はベクトルの長さを1-2に短縮しようとしましたが、開けません。

EDIT:複数の名前付きのワークシートを含むブックを作成するには、今

#extract all data frames 
list2env(soup ,.GlobalEnv) 
#reassign names and form new list 
list_of_datasets1 <- list("filename"=dataframe,.....) 
#write new list 
write.xlsx(list_of_datasets1, file = "template.xlsx") 
+0

各データフレームは、新しいシートことになっていますか? – Cybernetic

+0

はい、データ入力フォームとして使用することを意図しています。 – Poppinyoshi

答えて

1

ためHACKによって解決、1の代わりにwrite.xlsx()の(この順序で)createWorkbook()addWorksheet()writeDataTable()、そしてsaveWorkbook()を使用する必要があります。ここでは、ランダムデータで作成したデータフレームのリストに基づいてワークシートを生成する例を示します。

library(openxlsx) 
id <- 1:5 
# create data frames 
aList <- lapply(id,function(x){ 
    # generate output as list so we can use id as index to worksheets 
    list(data.frame(matrix(runif(50),nrow=10,ncol=5)),x) 
}) 
# initialize a workbook 
wb <- createWorkbook("Workbook") 
# add worksheets to workbook 
lapply(aList,function(x){ 
    addWorksheet(wb,paste("worksheet",x[[2]])) 
    writeDataTable(wb,paste("worksheet",x[[2]]),x[[1]]) 
}) 
# save workbook to disk once all worksheets and data have been added 
saveWorkbook(wb,file="./data/newWorkbook.xlsx") 

...出力と、ブックに5つのタブがあることに注意してください。

enter image description here

+1

ありがとう、@ Len Greski。リスト内の名前付き要素がシート名として出てくることが重要です。その名前は、記入する必要があるフォームのように、フォームの名前が重要です。私は今は非効率な方法でタスクを完了することができました。私の編集を見てください。 – Poppinyoshi

関連する問題