Как Изменить Порядок Листов С Помощью R

#r #openxlsx

#r #openxlsx

Вопрос:

Я использую книгу Excel на 32 листах. Однако, когда я пытаюсь поместить лист тридцать два в начале листа 1 в книге, используя порядок листов, это приводит к ошибке. Пожалуйста, найдите ошибку, прикрепленную ниже.

 worksheetOrder(wb)lt;-c(32,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31)  

введите описание изображения здесь

Комментарии:

1. Пожалуйста, предоставьте больше контекста и формулировок для этого вопроса. В документации openxlsx::worksheetOrder говорится: «Эта функция не изменяет порядок листов в объекте рабочей книги, она просто меняет порядок при записи в файл». Поэтому было бы полезно увидеть код, который создает книгу, а также код, который сохраняет книгу с 32 листами.

Ответ №1:

Вот решение с использованием readxl пакета, но сначала давайте создадим тестовый набор данных с 4 листами.

 data lt;- list(head(iris), head(mtcars), head(cars), head(airquality)) writexl::write_xlsx(data, 'test.xlsx')  

Теперь в вашем рабочем каталоге должен быть файл excel с 4 листами. на 1-м листе есть iris набор данных, на 2 mtcars cars -набор данных , на 3-м-набор данных и на 4 airquality -м.

Решение —

 library(readxl)  #Order in which you want the sheets to be in req_order lt;- c(4, 2, 3, 1) #Read the sheet names sheets lt;- excel_sheets('test.xlsx') #Read the data in a list read_data lt;- lapply(sheets, function(x) read_xlsx('test.xlsx', x)) #Rearrange the data as per `req_order` read_data lt;- read_data[req_order] #Write the data to a new file with the new order.  writexl::write_xlsx(read_data, 'new_test.xlsx')  

Теперь вы можете найти новую книгу Excel с 4 листами, порядок которых изменился на airquality , mtcars , cars и iris , как указано в req_order .

Комментарии:

1. Я не хочу создавать новый рабочий лист, я хочу изменить порядок одного и того же рабочего листа.