0
文字列に基づいて新しい列を作成したい。作成することはできますが、一致しない列も作成しています。例:文字列と一致しない列の作成を避ける
x = data.frame(name = c("Java Hackathon", "Intro to Graphs", "Hands on
Cypher"))
toMatch <- c("Hackathon","Hands on","Test","java")
##Sentence with phrases
phrases11 <- as.vector(toMatch)
res <- sapply(phrases11, grepl, x = as.character(x$name),ignore.case=
TRUE)
rownames(res) <- x$name
#replacement
ones <- which(res==1, arr.ind=T)
res[ones]<-colnames(res)[ones[,2]]
res
Output:
Hackathon Hands on Test java
Java Hackathon "Hackathon" "FALSE" "FALSE" "java"
Intro to Graphs "FALSE" "FALSE" "FALSE" "FALSE"
Hands on Cypher "FALSE" "Hands on" "FALSE" "FALSE"
私はマッチングのための膨大なデータを持っているので、「テスト」列を作成したくありません。したがって、基本的にはres <- sapply(phrases11, grepl, x = as.character(x$name), ignore.case = TRUE)
でコードの変更を行うことができるので、 'toMatch'ベクトルと一致する列を作成するだけですか?他のアプローチはありますか?
は 'do.call(CBIND、フィルター(ネゲート(is.null)で試してみてくださいif(any(i1))i1})、フレーズ11)))setNames(lapply(phrases11、function(y){i1
akrun