5
Hello, People!
I’m working on a function in R that measures the amount of words between two specific words, I’m calling the function worDistance
, it works as follows, you insert two arguments, given a string t, for example, palavra1
and palavra2
and it returns the number of words between word 1 and word 2, for example, given that:
t <- "bom dia posso ajudar nao viu zunkz sabe tava pagar"
worDistance("bom","ajudar") # ela retorna o número 2.
Denotes that the function reads the string t from left to right, when I invert the word order to
worDistance("ajudar","bom")
it returns the number 0
. Instead of returning 2
, again, how can I resolve this??
I’ll put the function structure below:
worDistance <- function( palavra1, palavra2 , direcao ) {#
###Legenda
#A função vai retornar "-1" quando uma das palavras inseridas no input não existir na string t
#A função vai retornar "-2" quando ambas as palavras inseridas no input não existir na string t
if( direcao == 1 ) {##
# 1 = Esquerda para direita
total_palavras <- sapply(strsplit(transcricao, " "), length)
a <- gsub( paste0('^.*',palavra1,'\\s*|\\s*',palavra2,'.*$'), '',
transcricao)
b <- sapply(strsplit(a, " "), length)
if( b == total_palavras ) {
return(-2)
}else if( b == (total_palavras) - 1) {
return(-1)
}else if( b != total_palavras ){
return(b)
}
}##
}#