2017-10-24 8 views
0

私の目標は最終的にはスパム検出器のような分類子を構築することです。フォルダからファイルを読み込んでRでデータフレームに保存する

しかし、クラシファイアに送るテキストを含むテキストファイルを読み込んでデータフレームに格納する方法はわかりません。

フォルダ内にテキストファイル(最初はメモ帳に保存されてからテキストファイルに保存される生のテキスト)を組み立てたとします。名前はその内容を示す名前です。 xx_xx_xx__yyyyyyyyyyy_zzzzz、xxは日付を表す数字、yyyyyyyyyはテーマを表す文字列、zzzzはソースを表す文字列になります。 yyyyyyyyyyyとzzzzzzzは可変長です。

私の目的は、ファイルをループして読み込み、その名前に含まれる情報をデータフレームの別々の列に格納する機能を作成することです。 「日付」、「テーマ」、「ソース」 - 第4列のテキストコンテンツ(「コンテンツ」など)

これはどのように達成できましたか?

あなたのアドバイスは高く評価されます。

+2

'list.files'とパッケージ' readr'を調べてください – CPak

答えて

0

こここんにちは可能な答えですが、私は代わりに、データフレームのリストに結果を格納していますが、あなたは(rbind.data.frame、結果)

をdo.call使用して一方から他方に変換することができます
require(stringr) 
datawd<-"C:/my/path/to/folder/" # your data directory 
listoffiles<-list.files(str_c(datawd)) # list of files 
listoffiles<-listoffiles[grep(".txt",listoffiles)] # only extract .txt files 
my_paths<-str_c(datawd,listoffiles) # vector of path 
# the following works with windows only 
progress<-winProgressBar(title = "loading text files", 
     label = "progression %", 
     min = 0, 
     max = length(my_paths), 
     initial = 0, 
     width = 400) 
#000000000000000000000000000000000000000 loop 
for (i in 1:length(chemins)){ 
    result<-list() 
    setWinProgressBar(progress,i,label=listoffiles[i]) 
    the_date<-sapply(strsplit(listoffiles[i],"_"),"[[",1) 
    the_theme<-sapply(strsplit(listoffiles[i],"_"),"[[",2) 
    the_source<-sapply(strsplit(listoffiles[i],"_"),"[[",3) 

# open connexion with read 
    con <- file(my_paths[i], open = "r") 
# readlines returns an element per line, here I'm concatenating all, 
#you will do what you need.... 
    the_text<- str_c(readLines(con,warn = FALSE)) 
    close(con) # closing the connexion 
    result[[i]]<-list() 
    result[[i]]["date"]<-the_date 
    result[[i]]["source"]<-the_source 
    result[[i]]["theme"]<-the_theme 
    result[[i]]["text"]<-the_text 
    } 
#000000000000000000000000000000000000000 end loop 
関連する問題