Странное поведение при применении функций 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