2014-01-21 32 views
0

我試圖一次讀取一行隨機文本文件。然後將該行分割成「單詞」並對每個單詞執行一些正則表達式,例如查找以「w」開頭的所有單詞。像代碼片段以下後,我得到:R,readLines,strsplit和grep

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]等等被訪問。 感謝您的幫助。

回答

0

strsplit返回一個列表。在這種情況下,它是一個長度爲1的列表,但是如果在整個文件上使用了readLines,則稱爲strsplit,它將返回一個長度與行數相同的列表。

對於您使用它的方式,您需要選擇列表中第一個組件的第一個元素。即「u」的myVector[[1]][1]和「rtu」的myVector[[1]][2]。此外,在這種情況下,unlist(myVector)[1]unlist(myVector)[2]也可以使用。

+1

完成工作。 – user2970161