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

    적용 함수 제품군을 사용하여 각 파일을 하나의 디렉토리에서 두 번째 디렉토리의 각 파일의 두 번째 시트로 복사하고 싶습니다 .두리스트의 데이터 프레임을 적용 패밀리를 사용하여 Excel 파일의 두 개의 개별 시트로 작성하십시오.

    다음 작업을 수행하여 여러 가지를 시도했지만 디렉토리의 단일 파일에 대해서만 시도했습니다. 해당 폴더의 모든 파일에 어떻게 적용합니까?

    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 파일은 두 번째 시트로 다른 Excel 파일로 복사됩니다. 하지만이 폴더의 모든 파일에 적용 할 싶습니다. 어떤 조언을 환영합니다!

    답변

    0

    내 솔루션입니다
    0

    XLConnect에 대한 설명서에서 원하는 작업을 수행하는 가장 쉬운 방법은 먼저 loadbookbook()을 사용하여 통합 문서를 작성한 다음 작성하려는 각 워크 시트에 대해 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) 
    

    문제의 워크 시트 섹션 주위에 루프를 배치하는 것은 간단합니다.

    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))} 
    
    : 여기

     관련 문제

    • 관련 문제 없음^_^