Странное поведение при применении функций XLConnect к списку рабочих книг

Часть 1:

Я пытаюсь переименовать листы в списке книг, используя lapply а также XLConnect (Мне нужно переименовать их для правильной работы следующей части кода, подробнее об этом в части 2):

library(XLConnect)

# testWB.xlsx contains a blank worksheet called Sheet1
testWB <- rep(lapply("testWB.xlsx", loadWorkbook), 3)

lapply(1:length(testWB), function(x) {
  renameSheet(testWB[[x]], "Sheet1", "test1")
})

Дает мне ошибку:

`Error: IllegalArgumentException (Java): Sheet index (-1) is out of range (0..0)`

Но:

renameSheet(testWB[[1]], "Sheet1", "test1")

Переименовывает лист, как и положено. Это странно, renameSheet не работает с lapply, но getActiveSheetIndex работает с lapply.

unlist(lapply(1:length(testWB), function(x) {
  getActiveSheetIndex(testWB[[x]])
}))
[1] 1 1 1

Я проверял другие XLConnect функции и некоторые работают в lapply, а другие нет.

Часть 2:

Мне нужно переименовать листы, чтобы получить writeWorksheet функция для работы. Например:

cell_data <- c("Larry", "Curly", "Moe")

unlist(lapply(1:length(testWB), function(x) {
  writeWorksheet(testWB[[x]], cell_data[x], sheet = "sheet1", header = F)
  readWorksheet(testWB[[x]], "Sheet1", header = F)
}))
Col1    Col1    Col1 
"Larry" "Curly"   "Moe" 

Но, глядя на testWB после запуска вышеуказанного цикла:

unlist(lapply(1:length(testWB), function(x) {
  readWorksheet(testWB[[x]], "Sheet1", header = F)
}))
Col1  Col1  Col1 
"Moe" "Moe" "Moe"

Как вы можете видеть, это заканчивается вводом Moe во все ячейки А1 каждого листа в каждой книге вместо Larry, Curly, Moe в ячейке А1 каждой соответствующей рабочей книги. Если листы рабочей книги имеют разные имена (например, Sheet1, Sheet2, Sheet3), то это работает правильно. Отсюда моя проблема в первой части.

Так как я не получил это на работу, мне пришлось реконструировать testWB.xlsx шаблоны в R и повторно применить форматирование. testWB.xlsx на самом деле это довольно тонкая форма excel, поэтому воссоздание ее не идеальное.

Надеюсь, я просто что-то упустил и заранее благодарю за любые предложения.

XLConnect версия 0.2-12

0 ответов

Другие вопросы по тегам