R项目:对文件夹中的文件进行循环计算

时间:2018-06-11 11:44:12

标签: r text-files batch-processing

我在文件夹中有一堆文本文件。脚本应该读取整个列表并对每个文件进行计算。结果应写在" 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 :(得分:0)

我尝试了一下并且来到这段代码,它没有错误消息:

    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")
}

但是,它创建了一个只有5个条目的results.txt文件。当我调用list_txt时,有164个文件。

可能是什么问题?