Использование Map с read.csv и разделителем канала, вызывающим ошибки - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь загрузить серию текстовых файлов в таблицу.Read.csv работает с 1 файлом, но когда я пытаюсь объединить файлы с помощью Map & rbind, я получаю ошибки, которые не понимаю.Как только я попал в таблицу, я могу начать очистку данных

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

Это мой код до сих пор

install.packages(c("readr","dplyr","tidyr","purrr"))
library(readr) 
library(dplyr)
library(tidyr)
library(purrr)
folder <- "D:/SCANNER/"
files_list <- list.files(path = folder, pattern="*.hmd")
data_wcci<- files_list %>% map(read.csv(header = FALSE,skip="8"))%>%  reduce(rbind)
data_wcci

Я надеюсь получить одну таблицу в конце.Я получаю следующее сообщение об ошибке:

Error in read.table(file = file, header = header, sep = sep, quote = quote,  : 
 argument "file" is missing, with no default

Это небольшой пример данных в текстовом файле.После загрузки мне нужно будет удалить \ и разделить на собственные столбцы.Удалить ;Мне также нужно будет использовать спред в столбце V1, но я еще не подумал о коде для этого

> data_wcci
                  V1  V2      V3     V4     V5    V6  V7   V8
1            SURVEY\\TTS       11.00         TTS01 FALSE WDM WDM;
2      SECTION\\A3054020     2054.00 270711 270711    NA   ;     
3           OBSERV\\LLRT CR1    0.00    10;           NA         
4              OBVAL\\13       13.20     V;           NA         
5           OBSERV\\LRRT CR1    0.00    10;           NA         
6              OBVAL\\13        3.00     V;           NA         
7           OBSERV\\LLTX CR1    0.00    10;           NA         
8              OBVAL\\13        1.26     V;           NA         
9           OBSERV\\LRTX CR1    0.00    10;           NA

1 Ответ

0 голосов
/ 27 апреля 2019

Ваш код не работает, потому что ваша функция read.csv пытается прочитать файлы, которые хранятся в вашей папке, но вы должны указать полный путь для их чтения. Вы можете сделать это, например, с помощью paste0(path, list.files[[1]]).

Этот фрагмент кода должен делать то, что вы хотите:

do.call("rbind", lapply(files_list, function(x) read.csv(paste0(folder, x))))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...