【问题标题】:createSheet error in R xlsx package when trying to write multiple sheets using forl oop尝试使用 forl oop 编写多张工作表时,R xlsx 包中的 createSheet 错误
【发布时间】:2019-01-05 15:33:15
【问题描述】:

我有 5 个数据框,当我尝试创建一个包含多个电子表格的工作簿时,除了一个 .我的工作表名称是字符串。谁能帮我纠正这个问题? 我只能找到createSheet error xlsx llibrary,在这种情况下没有帮助。

To_write <- c('PR1','PR2','PR3','PR4','PR5')

#Create a new workbook for ouputs
workBook <- createWorkbook(type="xlsx")

for(tp in To_write ){

        sheet= xlsx :: createSheet(workBook,sheetName = as.character(tp) )
        addDataFrame(Data.Trans[[tp]], sheet, startRow = 1, row.names=FALSE)

}


saveWorkbook(workBook, file=paste0( ResultDir, '/','tTest.xlsx')   ) 

其中 Data.Trans 是 list 。仅当 tp

请告诉我还需要什么其他信息。

提前致谢

【问题讨论】:

    标签: r xlsx rjava


    【解决方案1】:

    测试一下:

    Data.Trans<-list(PR1=data.frame(rnorm(100)),PR2=data.frame(rnorm(100)),PR3=data.frame(rnorm(100)),PR4=data.frame(rnorm(100)),PR5=data.frame(rnorm(100)))
    
    To_write <- c('PR1','PR2','PR3','PR4','PR5')
    library(xlsx)
    #Create a new workbook for ouputs
    workBook <- createWorkbook(type="xlsx")
    
    for(tp in To_write ){
    
      sheet= xlsx :: createSheet(workBook,sheetName = as.character(tp) )
      addDataFrame(Data.Trans[[tp]], sheet, startRow = 1, row.names=FALSE)
    
    }
    
    dir.create("ResultDir")
    saveWorkbook(workBook, file=paste0( "ResultDir", '\\','tTest.xlsx')   ) 
    

    【讨论】:

    • 错误不在 dir.create 中,我在开始时创建 ResultDir。当 tp = To_write[3] 时,错误出现在 sheet= xlsx :: createSheet(workBook,sheetName = as.character(tp) )
    • @RG20:代码在我的机器上成功,尽管它没有放在目标目录中,因为文件名以嵌入的选项卡结束,而不是在 ResultDir 中进行调整。由于您没有提供测试Data.Trans,因此您得到的越界错误不可重现。
    • 代码在ResultDir中成功生成tTest.xlsx
    • @你在 Windows 上吗。
    • 我在 Mac 上。我确实理解削减约定是不同的。我的意思不是要批评,到目前为止我是唯一的支持者,所以不要防御。使用file.path 可以实现更跨平台的解决方案,它具有平台感知的目录分隔符选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 2021-03-29
    • 2020-08-19
    • 2016-03-17
    • 2015-04-04
    • 2020-07-09
    • 2013-11-29
    相关资源
    最近更新 更多