Ошибка, связанная с импортом в 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] в этом случае).

1 ответ

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

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

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