Проект R: Расчет цикла для файлов в папке - PullRequest
0 голосов
/ 11 июня 2018

У меня есть куча текстовых файлов в папке.Скрипт должен прочитать весь список и сделать расчет для каждого файла.Результат должен быть записан в файле «results.txt».Я также хочу, чтобы имя обработанного файла в таблице результатов и результат.Но эта линия все еще отсутствует.Но я не знаю, как добавить это.Я довольно далеко, но теперь я застрял:

library(data.table)
ldf <- list() # creates a list
list_txt <- dir(pattern = "*.txt")
for (k in 1:length(list_txt)){
  ldf[[k]] <- fread(list[k], select = c("Count"))
  br=c(0,1,3,9,15,500) #Set breaks
  bins=c(0,1,2,3,4) #Set bins
  freq=hist(ldf[[k]]$Count, breaks=br, plot=FALSE)
  df=data.frame(bins, frequency=freq$counts)
  df$pct <- df$frequency*100 / sum(df$frequency)
  df$pct<-round(df$pct,digits=0)
  df$hscore<-df$pct * df$bins
  hscore=sum(df$hscore)
  cat(df$hscore,file="results.txt",sep="\n")
}

Код ошибки, который я получаю:

Error in hist.default(ldf[[k]]$Count, breaks = br, plot = FALSE) : 
  some 'x' not counted; maybe 'breaks' do not span range of 'x'

Есть предложения?

1 Ответ

0 голосов
/ 11 июня 2018

Я попробовал немного больше и пришел к этому коду, который работает без сообщений об ошибках:

    library(data.table)
ldf <- list() # creates a list
list_txt <- dir(pattern = "*.txt")
for (k in 1:length(list_txt)){
  ldf[[k]] <- fread(list_txt[k], select = c("Count"))
  br=c(-Inf,1,3,9,15,Inf) #Set breaks
  bins=c(0,1,2,3,4) #Set bins
  freq=hist(ldf[[k]]$Count, breaks=br, plot=FALSE)
  df=data.frame(bins, frequency=freq$counts)
  df$pct <- df$frequency*100 / sum(df$frequency)
  df$pct<-round(df$pct,digits=0)
  df$hscore<-df$pct * df$bins
  hscore=sum(df$hscore)
  cat(df$hscore,file="results.txt",sep="\n")
}

НО, он создает файл results.txt только с 5 записями.Когда я вызываю list_txt, там 164 файла.

В чем может быть проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...