2017-04-10 90 views
0

我翻遍了电路板,但在R studio中找不到我的问题的答案。将数据从txt语料库提取到R中的.csv

所以,也许任何人都有时间和善良,来帮助我。

我有一个文件夹包含106个txt文件,我希望提取数据。

因此,我想建立一个.csv两行。第一行应包含文件名,第二行应包含一个数字,whis是第一行的最后一个“单词”。

每个文档的第一行看起来像“y的文档x”。因此第二行应包含y。请注意,x可能包含一位,两位或三位数字。 如果这是不可能的,我会很高兴,如果.csv可以包含第2行的整个第一行。

回答

0

此解决方案确实涉及很多步骤,所以我认为它值得回答,但我'你喜欢你试着改进你的问题,以确保我正在回答你打算提出的问题。例如,你说你想要一个csv与两个,但从你的描述的声音我认为你其实意味着你想要两个。我在下面的解决方案中对此进行了一些猜测。

有发生在这里的几个基本步骤:

  • 通过你的工作目录遍历找到在时间的路径和.txt文件
  • 读取每个文件,一个所有的行名
  • 选择第一行
  • 突破将第一行字
  • 选择第一行的最后一个字
  • 追加这个词的运行列表
  • 后迭代完成,建立一个data.frame和写入CSV输出
fp = tools::list_files_with_exts(dir='.', ext='txt', full.names = TRUE) 
fn = tools::list_files_with_exts(dir='.', ext='txt', full.names = FALSE) 
fn = tools::file_path_sans_ext(fn) 

items = length(fp) # get our iterator length for files 

lastword = as.character(NULL) 
for(i in 1:items) { # iterate through files 
    line = readLines(fp[i])[1] # read in lines and select the first 
    words = strsplit(line, ' ')[[1]] # split string into vector on spaces 
    word = tail(words, 1) # get the last word of the vector 
    lastword = c(lastword, word) # combine with lastword list 
} 
df = data.frame(filename=fn, lastword) 
write.csv(df, 'my.csv') 
+0

哇@Mikuana太感谢你了。我不擅长编码,但如果我阅读你的建议,我会得到你的解决方案,我喜欢它。 我真的是指栏。对困惑感到抱歉! 如果我尽管试试你的代码,会出现以下错误: '错误文件(CON,“R”):无法打开连接 另外:警告消息: 在文件(CON,“R”):无法打开文件'NA':没有这样的文件或目录' 我试图谷歌它,并将文件移动到另一个文件夹以及使用'setwd'。这似乎是一个R具体的错误,我不知道如何解决方法:( – Dumbledoge

+0

对不起,我再次,我忘了提及,我也确保我的源路径以另一个Stackoverflow线程中讨论的“/”结尾。 – Dumbledoge

+0

我认为这两个错误都存在,因为'fp == NA'。你看过“fp”对象的元素吗?你是否收回了一个向你的txt文件看起来像有效文件路径的向量? – Mikuana