0
Я читаю некоторые файлы csv для создания фрейма данных и добавляю к нему дополнительный столбец с именем файла, используя следующий код:«rbind» и «lapply» работают очень хорошо, если мне не нужно добавить имя файла
wd <- "Working directory"
file_list <- list.files(wd)
### Function: read data ###
read_data <- function(file){
d <- read.csv(paste(wd,file,sep=""), stringsAsFactors = FALSE, strip.white = TRUE, na.strings = c("NA","")); # read in every file in the working directory
d$FileName <- substr(file,20,29); # append part of file name
d # return the dataframe
}
### Call rbind: merge data ###
df <- do.call(rbind, lapply(file_list,read_data))
Но эта ошибка возникает:
Error in `$<-.data.frame`(`*tmp*`, "FileName", value = "2016010209") :
replacement has 1 row, data has 0
Что я делаю неправильно?
Cheers
Возможно, файл, соответствующий «2016010209», может содержать только заголовок и данные? – Roland
Попробуйте добавить инструкцию 'print' или' message' в функцию 'read_data', чтобы сначала определить, какой файл вызывает проблемы. Осмотрите файл, который действительно находится в том виде, который вы ожидаете. –
IMHO лучше установить рабочий каталог 'setwd (wd)'. В этом случае вам придется изменить скрипт в некоторых частях. – jogo