我已经创建了以下函数。 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