У меня есть текст романа в одном векторе, он разбит на слова novel.vector.words
Я ищу все экземпляры строки "кровь". Однако, поскольку вектор разбит по словам, каждое слово является собственной строкой, и я не знаю, чтобы искать соседние строки в векторе.
У меня есть общее представление о том, что делают циклы, и, следуя некоторым инструкциям из учебника, я могу использовать этот цикл for для нацеливания на все позиции «крови» и контекста вокруг него, чтобы создать выделенный табуляцией дисплей KWIC (ключевые слова в контексте).
node.positions <- grep("blood", novel.vector.words)
output.conc <- "D:/School/U Alberta/Classes/Winter 2019/LING 603/dracula_conc.txt"
cat("LEFT CONTEXT\tNODE\tRIGHT CONTEXT\n", file=output.conc) # tab-delimited header
#This establishes the range of how many words we can see in our KWIC display
context <- 10 # specify a window of ten words before and after the match
for (i in 1:length(node.positions)){ # access each match...
# access the current match
node <- novel.vector.words[node.positions[i]]
# access the left context of the current match
left.context <- novel.vector.words[(node.positions[i]-context):(node.positions[i]-1)]
# access the right context of the current match
right.context <- novel.vector.words[(node.positions[i]+1):(node.positions[i]+context)]
# concatenate and print the results
cat(left.context,"\t", node, "\t", right.context, "\n", file=output.conc, append=TRUE)}
Однако я не уверен, как это сделать, - использовать что-то вроде оператора if или что-то, чтобы захватывать только случаи «крови», за которыми следует «of». Нужна ли другая переменная в цикле for? В основном, я хочу, чтобы для каждого найденного им экземпляра «крови» я хотел видеть, является ли слово, следующее непосредственно за ним, «из». Я хочу, чтобы цикл нашел все эти экземпляры и сказал, сколько их в моем векторе.