Ошибка, связанная с импортом Excel с помощью read_excel

Я новичок в R и изучаю, как работают read_excel() и excel_sheets(), пытаясь использовать два таких кода ниже. Они предназначены для чтения второго листа файла Excel.

output <- read_excel(excel_sheets("population.xlsx")[2], 
            path = "population.xlsx")

output <- read_excel(excel_sheets("population.xlsx"), 
         sheet = 2, path = "population.xlsx")

Первый код работает успешно, а второй нет с ошибкой

Error: length(x) == 1L is not TRUE

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

В документе read_excel говорится, что он может использовать аргумент «лист», чтобы выбрать, какой лист читать, что, я думаю, идентично указанию номера порядка вектора символов (т.е. excel_sheets("population.xlsx")[2] в этом случае).


person Yoshiaki    schedule 21.02.2019    source источник


Ответы (1)


Просто read_excel(path = "population.xlsx", sheet = 2) должно работать. Ваш первый код получает список всех листов, а затем выбирает имя второго; read_excel принимает как целые позиции, так и имена листов в качестве аргумента для sheet.

Вы можете запутаться, потому что вам нужно знать кое-что о сопоставлении аргументов; именованные аргументы сопоставляются, а затем сопоставляются слева направо. Итак, в первом примере указывается path, а затем вызов excel_sheets передается аргументу sheet. Во втором вы указываете sheet, и поэтому я думаю, что он будет передан аргументу range, который должен принимать только вектор символов длины 1. Это источник вашей ошибки.

person Calum You    schedule 21.02.2019