以下の関数を作成しました。結果として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))
そうでない場合は0を返す 、携帯電話との距離が鳴ったと何の答えが6つの未満の言葉ではない場合は1を返すようであるあなたの助けのためにありがとうございました。
こんにちはヨリス、ありがとうございましたが、休憩を削除した後、それはまだ私にどんな結果を与えるものではありません。 – baver
これは、あなたの関数があなたがそれらを変更したい前に定義された 'pos1'と' pos2'オブジェクトを持っていないからです。ループの前に 'pos1 < - pos2 < - c(0,0)'を追加し、return文を関数の絶対終わりに移動します。 –
こんにちは、申し訳ありません、それは1を返しませんが、私はにテキストを変更したときに、それはまだそれが何の問題が何であるかをテキスト1を返さないように1が見える返す「電話は、B、C、DのE F zをyのzの電話はD E Fを鳴らし鳴らしました」。 – baver