#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
раз восемь раз, каждый раз по одной колонке, и выводите их как adfc
? Хотя и не один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, я удалил ее, и все в порядке. Спасибо за это! Я просто переосмыслил решение.