R,readLines,strsplit和grep

时间:2014-01-21 23:35:49

标签: r readlines strsplit

我试图一次读取一行随机文本文件。然后将该行拆分为“单词”并对每个单词执行一些正则表达式,例如查找以“w”开头的所有单词。在下面的代码片段后,我得到:

while (length(oneLine <- readLines(infile, n = 1, warn = FALSE)) > 0) {
    myVector <- (strsplit(oneLine, " ", fixed = FALSE, perl = TRUE))
    res <- grep("^w", myVector, perl = TRUE, value = TRUE)
    ...

> myVector
[[1]]
[1] "u"            "rtu"          "jgiyu"        "t6riuri-4e5-" "ee4"          "59"          
[7] "43"   

我的问题是,访问“u”,“rtu”,......的正确语法是什么?

> myVector[1]
[[1]]
[1] "u"            "rtu"          "jgiyu"        "t6riuri-4e5-" "ee4"          "59"          
[7] "43"  

不起作用。会是什么?什么与[[1]]有关?我的印象是矢量是一维的,其元素可以像myVector [1],myVector [2]等一样被访问。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

strsplit返回一个列表。在这种情况下,它是长度为1的列表,但是如果您在整个文件上使用readLines,然后调用strsplit,它将返回与行数相同长度的列表。 / p>

对于您使用它的方式,您需要选择列表第一个组件的第一个元素。即“{”为myVector[[1]][1],“rtu”为myVector[[1]][2]。此外,在这种情况下,unlist(myVector)[1]unlist(myVector)[2]也可以。