Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

Say I have a line in a file:

string <- "thanks so much for your help all along. i'll let you know when...."

I want to return a value indicating if the word know is within 6 words of help.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
1.2k views
Welcome To Ask or Share your Answers For Others

1 Answer

This is essentially a very crude implementation of Crayon's answer as a basic function:

withinRange <- function(string, term1, term2, threshold = 6) {
  x <- strsplit(string, " ")[[1]]
  abs(grep(term1, x) - grep(term2, x)) <= threshold
}

withinRange(string, "help", "know")
# [1] TRUE

withinRange(string, "thanks", "know")
# [1] FALSE

I would suggest getting a basic idea of the text tools available to you, and using them to write such a function. Note Tyler's comment: As implemented, this can match multiple terms ("you" would match "you" and "your") leading to funny results. You'll need to determine how you want to deal with these cases to have a more useful function.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...