【问题标题】:R: how to get information from a txt file with RR:如何使用 R 从 txt 文件中获取信息
【发布时间】:2011-05-31 10:31:05
【问题描述】:

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

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

我学习了strsplit 可能会用到,它似乎在RCurl报废材料中有效,在这里也有效吗?如果是的话,你能教我怎么做吗?

非常感谢......

【问题讨论】:

标签: list r text-files


【解决方案1】:

要回答您的第一个问题,要读取文本文件,您应该使用函数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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-19
    • 1970-01-01
    • 1970-01-01
    • 2022-06-30
    • 2021-12-05
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多