Ошибка, основанная на пустых строках, импортирующих xlsx в R

#r #vector

Вопрос:

Я импортирую и добавляю сотни электронных таблиц Excel в R, используя map_dfr в сочетании с пользовательской функцией:

Функция импорта определенных столбцов на каждом листе:

 fctn <- function(path){map_dfc(.x = c(1,2,3,7,10,11,12,13), ~ read.xlsx(path,
                                                                        sheet=1,
                                                                        startRow = 7,
                                                                        colNames = FALSE,
                                                                        cols = .x))}
 

Код для извлечения всех файлов в «пути» и добавления их, где файл.список-это список путей и файлов для импорта:

 all.files <- map_dfr(file.list, ~ fctn(path=.x))
 

Моя проблема в том, что на некоторых из этих листов в некоторых столбцах отсутствуют значения, но не в других, и R это не нравится. Я сталкиваюсь с этой ошибкой, например:

«Ошибка: не удается повторно использовать» ..1 «(размер 8), чтобы соответствовать «..2 » (размер 6)», что происходит из-за того, что в столбце 2 отсутствует информация в двух ячейках.

Есть ли какой-нибудь способ заставить R принимать отсутствующие значения в ячейках?

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

1.Есть ли какая-то особая причина, по которой вы читаете каждый path раз восемь раз, каждый раз по одной колонке, и выводите их как a dfc ? Хотя и не один read.xlsx(..., cols=c(1,2,3,...,13)) раз? (Или, возможно, .x=c(...) это на самом деле столбец списка в большем кадре, поэтому его лучше представить как .x = list(c(...)) ?)

2. Я довольно новичок в R (был программистом SAS в течение многих лет), и это был метод, который я собрал вместе! Всегда открыт для предложений, если это слишком неуклюже.

3. Мое предложение состоит в том, чтобы использовать fctn <- function(path) read.xlsx(path, sheet=1, startRow=7, colNames=FALSE, cols=c(1:3, 7, 10:13)) . Что касается вашей ошибки, трудно дать четкий совет без данных, которые вызывают ошибку; поскольку речь идет об утилизации, это предполагает, что удаление map_dfc может устранить вашу ошибку, предполагая, что некоторые из выбранных вами столбцов имеют пустые ячейки.

4. Спасибо, однако каждая электронная таблица, которую я импортирую, потенциально имеет разный размер, поэтому я не могу указывать блоки ячеек, только строки. И я думаю, что это моя проблема. Я надеялся, что есть вариант, который я еще не обнаружил в read.xlsx функция, позволяющая относиться к отсутствиям как к чему-то другому…

5. Так что, оказывается, проблема была в map_dfc, я удалил ее, и все в порядке. Спасибо за это! Я просто переосмыслил решение.