我已經創建了以下函數。 R應該返回1,但我沒有給出任何結果?r函數不返回任何結果
phrasedis <- function(string, phrase1, phrase2,n) {
char1 <- unlist(gregexpr(phrase1,string))
char2 <- unlist(gregexpr(phrase2,string))
for (i in 1: 2) {
for (j in 1: 2) {
pos1[i] <- sapply(strsplit(substr(text, 0,char1[i]-1),"\\s"),length)+1
pos2[j] <- sapply(strsplit(substr(text, 0,char2[j]-1),"\\s"),length)+1
dist <- pos2[i] - pos1[j]
a <- ifelse(pos1[i]>0 & pos2[j]>0 & dist>0 & dist<=6,1,0)
if (a==1) break
return(a)
}
}
}
text <- "phone rang a b c d e f z y z phone rang but no answer"
b <- sapply(text, FUN=function(str) phrasedis(str,"phone rang" , "no answer",6))
它應該做的是返回1,如果手機之間的距離鈴響了,沒有答案是小於6個字,否則返回0 非常感謝您的幫助。
嗨里斯,謝謝你,但除去休息後,它仍然沒有給我任何結果。 – baver
這是因爲你的函數在你想改變它們之前沒有定義對象'pos1'和'pos2'。在你的循環之前加入'pos1 < - pos2 < - c(0,0)',並將return語句移到函數的絕對末尾。 –
嗨,對不起,它確實會返回1,但是當我將文本更改爲「電話鈴響了電話時,它仍然返回1」。看起來無論文字是什麼,它都返回1。 – baver