split
  • plyr
  • xlsx
  • purrr
  • pmap
  • 2017-11-21 2 views 0 likes 
    0

    各ファイルをあるディレクトリから2番目のディレクトリの各ファイルの2番目のシートにコピーするには、 。2つのリストのデータフレームを、適用ファミリを使用してExcelファイルの2つの別々のシートに書き込みます。

    私は多くのことを試みましたが、以下の作業を行うことで終わりましたが、ディレクトリ内の単一のファイルに対してのみでした。どのようにそのフォルダ内のすべてのファイルに適用するのですか?

    setwd(".../r_path//390") 
    l1 <- list.files(pattern='*.xlsx') 
    r1 = lapply(l1, read.xlsx, sheetIndex=1, header=TRUE) 
    names(r1) <- l1 
    s1 = split(r1, names(r1)) 
    
    setwd(".../r_path//390de") 
    l2 <- list.files(pattern='*.xlsx') 
    r2 = lapply(l2, read.xlsx, sheetIndex=1, header=TRUE) 
    names(r2) <- l2 
    s2 = split(r2, names(r2)) 
    
    library(plyr) 
    library(xlsx) 
    l_ply (r1[1], function(x) write.xlsx(x, 
           file =paste0(names(s2[[1]])), sheetName = "TECO", 
           append = TRUE, row.names = FALSE)) 
    

    ディレクトリの最初のExcelファイルは、2番目のシートとして別のExcelファイルにコピーされます。しかし、私はこれをフォルダ内のすべてのファイルに適用したい。どんなアドバイスも大歓迎!

    答えて

    0

    は私のソリューションです:

    for (i in names(r1)) { 
    l_ply (r1[i], function(x) write.xlsx(x,file =paste0(names(s2[[i]])), 
    sheetName = "TECO", append = TRUE, row.names = FALSE))} 
    
    0

    XLConnectのドキュメントから、必要な作業を行う最も簡単な方法は、最初にワークブック(loadWorkbook()を使用)を作成し、次に作成する各ワークシートに対してcreateSheet()を使用してワークブック作成したワークブックとワークシート・オブジェクトとともにwriteWorksheet()を使用して、作成したワークシートにデータを書き込みます。ループの最後にsaveWorkbook()を呼び出して、結果をExcelファイルに書き出します。プロセスは次のようになります。

    # Create a workbook (if it doesn't currently exist it will be created) 
    wb <- loadWorkbook("myexcelfile.xlsx",create=TRUE) 
    # Create a worksheet within the workbook 
    createSheet(wb,name="worksheet1") 
    # Write a dataframe called data_to_write to the new worksheet 
    writeWorksheet(wb,data_to_write,sheet="worksheet1") 
    # Write the Excel file 
    saveWorkbook(wb) 
    

    問題のワークシートセクションを囲むループを簡単に折り返します。ここで

    関連する問題