我想在R中做一些我认为不应该太难的事情。我有一个包含许多文件的文件夹。他们都看起来像这样。
airbag.WS-U-E-A.lst
.
是分隔符,.lst
是扩展名(可读为文本)。
每个文件包含每行数据,例如
/home/nobackup/SONAR/COMPACT/WR-U-E-A/WR-U-E-A0000075.data.ids.xml: <sentence>ja voor den airbag op te pompen eh :p</sentence>
/home/nobackup/SONAR/COMPACT/WR-U-E-A/WR-U-E-A0000129.data.ids.xml: <sentence>Dobby , als ze valt heeft ze dan wel al ne airbag hee</sentence>
我想要做的是,在R中创建一个包含所有文件数据的新数据集。理想情况下它看起来像这样:
ID | filename | word | component | left-context | right-context
---------------------------------------------------------------------------------------
1 airbag.WS-U-E-A.lst airbag WS-U-E-A ja voor den op te pompen eh :p
2 airbag.WS-U-E-A.lst airbag WS-U-E-A Dobby , als ze valt heeft ze dan wel al ne hee
生成所有这些内容是我应该能够在文件上使用一些正则表达式自我完成的东西,但是我不完全确定如何循环所有文件。例如,我从文件名的正则表达式函数中获取组件和单词信息,但是如何将每个文件的文件名存储在列中?
我尝试了以下
files <- list.files(path="", pattern="*.lst", full.names=T, recursive=FALSE)
lapply(files, function(x) {
t <- dirname(x)
out <- function(t)
})
t
但是返回的错误是
Error: unexpected '}' in:
"out <- function(t)
}"
答案 0 :(得分:1)
作为David Arenburg posted in the comments(但拒绝发布答案:D),解决方案是对文件使用apply
函数。
lapply(files, basename
)
将输出list()
。为方便起见,获得一个向量可能更好。在这种情况下,请使用sapply
。
sapply(files, basename)