我有一個文本文件,我想用R解析下面列出的下列結構。 字段的分隔符是「開始」和「結束」。解析R中的文本文件
START 蘋果 香蕉香蕉 END START 橙色 蘋果 西瓜 END ...
如何R中解析此獲得的分隔符之間的 內容。 我可以在R中使用XML庫來解析它嗎?
我有一個文本文件,我想用R解析下面列出的下列結構。 字段的分隔符是「開始」和「結束」。解析R中的文本文件
START 蘋果 香蕉香蕉 END START 橙色 蘋果 西瓜 END ...
如何R中解析此獲得的分隔符之間的 內容。 我可以在R中使用XML庫來解析它嗎?
試試這個:
x <- "START apple banana banana END START orange apple watermelon END ..."
library(gsubfn)
strapplyc(x, "START (.*?) END", simplify = c)
,並提供:
[1] "apple banana banana" "orange apple watermelon"
如果數據在一個列向量中,而不是行向量呢? –
請以可複製的形式提供您參考的輸入示例。 –
難道僅僅是一條線?如果您希望只使用基礎R,嘗試
line <- readLines("filename")[[1]]
data <- strsplit(line, " END START ")[[1]]
data[c(1, length(data))] <- gsub("^START | END$", "", data[c(1, length(data))])
你可以使用strsplit
:
> x <- "START apple banana banana END START orange apple watermelon END"
> z <- unlist(strsplit(x, "((START)|(END))|(END START)"))
> z[nzchar(z)]
[1] " apple banana banana " " orange apple watermelon "
你也可以使用gsub
如果你不需要分隔成子字符串:
> gsub("START|END", "", x)
[1] " apple banana banana orange apple watermelon "
如果您希望所有剩下的單詞分開,兩者的組合將會起作用:
> unlist(strsplit(gsub("START | END", "", x), " "))
[1] "apple" "banana" "banana"
[4] "orange" "apple" "watermelon"
編輯/添加:
從您的評論,這聽起來像你的數據是一個單列數據幀。如果是這樣的話,你可以做這樣的事情:
## set up the data
> d <- data.frame(words = unlist(strsplit(x, " ")))
> d$words <- as.character(d$words)
> d
words
1 START
2 apple
3 banana
4 banana
5 END
6 START
7 orange
8 apple
9 watermelon
10 END
## remove unwanted words by subsetting
> d[-with(d, which(words == "START" | words == "END")), ]
[1] "apple" "banana" "banana" "orange" "apple" "watermelon"
這裏有一個辦法:
x <- "START apple banana banana END START orange apple watermelon END"
library(qdap)
genXtract(x, "START\\s", "\\sEND")
## "apple banana banana" "orange apple watermelon"
另外,數據顯示在一列下去。每個字都是一行。 因此,row1 =「結束」,row2 =「開始」,row3 =「蘋果」... –
你能把上面的評論放在原來的文章?根據您的評論,我在回答中添加了一些內容。希望能幫助到你。 –