R和openxls,尝试创建多个xlsx

时间:2019-03-27 17:58:29

标签: r openxlsx

im试图创建一个函数,该函数需要两个文件,例如x和y,并返回一本xls书籍,该函数会创建许多具有从x文件中选择的名称的工作表,x看起来像这样

sol
   Orden
1   Z169
2   Z170
3   Z175

现在,在创建工作表后,它将写入从第二个文件(y)中获取的数据,y文件看起来像这样

base   
     Orden Dependencia
1    Z169    TRæNSITO
2    Z170    TRæNSITO
3    Z171    TRæNSITO
4    Z172    TRæNSITO
5    Z173    POLICIA
6    Z174    TRæNSITO
7    Z175    POLICIA

据我所知,我有此代码(以最小,完整,可验证的形式显示,或者不是吗?)

autoform <- function(x,y){

## create wordbook
wb <- createWorkbook()

## create work sheets   
for (i in 1:length(x[,1])){
    if(isTRUE(x[i,1] %in% y[,1])){  
        addWorksheet(wb, x[i,1])

##editing the sheet 
        writeData(wb,  x[i,1], y[i,2], startCol = 8, startRow = 6,rowNames = TRUE )
        }
    }

## save file

saveWorkbook(wb, "marth/javi/supertest.xlsx", overwrite = TRUE)
}

当我尝试使用autoform(x,y)时出现此错误:

> autoform(sol, base)
Error in nchar(sheetName) : 'nchar()' requires a character vector

我当时希望有人能解释我为什么这个错误以及如何解决这个问题,请你读一下

1 个答案:

答案 0 :(得分:0)

将所有的u都用于阅读,我一个人做了,我认为的问题是索引y与我在y变量中所需的索引不同,所以我需要另一个循环来使代码正常工作

autoform <- function(x,y){

    ## create wordbook
    wb <- createWorkbook()
    x<-as.matrix(x)
     y<-as.matrix(y)
    ## create work sheets   
    for (i in 1:length(x[,1])){
        if(isTRUE(x[i,1] %in% y[,1])){  
            addWorksheet(wb, x[i,1])
            for (j in 1:length(y[,1])){
            if(isTRUE(x[i,1] == y[j,1])){
    ##editing the sheet 
            writeData(wb, x[i,1], y[j,2], startCol = 8, startRow = 6,rowNames = TRUE )
            }
        }
}
}
    ## save file

    saveWorkbook(wb, "marth/javi/supertest.xlsx", overwrite = TRUE)
    }