R:如何从带有R的txt文件中获取信息

时间:2011-05-31 10:31:05

标签: list r text-files

R专家,

我有一个大文本文件,它有特定的模式和格式。

我的text.txt包含

x1 `xx`nkkna`yy`taktnaknvcaklrhkahnktn, altlkhakthakd`xx`nmm  cataitha`yy`knkcnaktnhakt

x2 `xx`ngkna`yy`taktnaknvcaklrhkahnktn, altlkhakthakdnmm  cataithaknkcnaktnhakt 

x3 `xx`nkg,kna`yy`taktnaknvcaklrhkahnktn, altlkhakthakdnmm  cataithaknk`xx`cna`yy`ktnhakt 

x4  nkkndataktnaknvcaklrhkahnktn, altlkhakthakdnmm  cataithaknkcnaktnhakt 

然后,我想让R找到一个单词列表,在这种情况下是x1,x2,x3和x4 在中间,我想得到每个人的列表,即“xx”和“yy”之间。

因此,结果将是四个列表

x1 = c("nkkna", "nmm  cataitha")
x2 = c("ngkna")
x3 = c("nkg,kna", "cna")
x4 = c("NA")

但是,我面临两个问题,想请求你的帮助。

  • 如何将大文本文件读入R?我从stackoverflow中学习了命令

x< - read.csv(textConnection“xxx”)可能会有所帮助,但问题是我的文件太大而无法复制和过去,并且该文件应该被读作csv。有没有更好的方法将我的文本文件加载到R作为一个可以在之后搜索和grep的对象?

  • 如何编写代码以获取所有这些信息?

我学习strsplit可能会使用,它似乎在RCurl报废的材料中工作,它也在这里工作吗?如果是的话,你能介意教我怎么做?

非常感谢.....

1 个答案:

答案 0 :(得分:8)

要回答您的第一个问题,要阅读文本文件,您应该使用函数scan()。您在SO textConnection上看到的引用纯粹是为了读取粘贴到控制台的一些示例数据。这就是我接下来要读取你的数据:

txt <- "
x1 `xx`nkkna`yy`taktnaknvcaklrhkahnktn, altlkhakthakd`xx`nmm  cataitha`yy`knkcnaktnhakt
x2 `xx`ngkna`yy`taktnaknvcaklrhkahnktn, altlkhakthakdnmm  cataithaknkcnaktnhakt 
x3 `xx`nkg,kna`yy`taktnaknvcaklrhkahnktn, altlkhakthakdnmm  cataithaknk`xx`cna`yy`ktnhakt 
x4  nkkndataktnaknvcaklrhkahnktn, altlkhakthakdnmm  cataithaknkcnaktnhakt"

dtxt <- textConnection(txt)

然后我以同样的方式使用scan来读取textConnetion数据。在您自己的代码中,您应该修改以下行,因此tat dtxt是您的文件位置。我保持这种格式,以便其他人可以复制我的结果,而无需在他们自己的文件系统上创建文件:

dat <- scan(dtxt, what="character", sep="\n")

现在您已经阅读了数据,这是对sapplystrsplitgsub进行(稍微复杂)调用以操纵数据。

sapply(seq_along(dat), 
    function(i)unlist(c(sapply(strsplit(dat[i], "`xx`"), 
              function(x)gsub("^(.*?)`.*", "\\1", x)[-1]))))

结果完全按照您的指定:

[[1]]
[1] "nkkna"         "nmm  cataitha"

[[2]]
[1] "ngkna"

[[3]]
[1] "nkg,kna" "cna"    

[[4]]
character(0)
相关问题