我有一个这样的字符串:
m<-"abcdabcdbcadacbddabcc..."
我想生成一个这样的矩阵:
我怎么能在 r 中做到这一点?
我有一个这样的字符串:
m<-"abcdabcdbcadacbddabcc..."
我想生成一个这样的矩阵:
我怎么能在 r 中做到这一点?
这给出了我相信你所追求的:
m <- "abcdabcdbcadacbddabcc"
library(qdap)
chars <- unique(unlist(strsplit(m, "")))
terms <- paste2(expand.grid(rep(list(chars), 3)), sep="")
t(counts(termco(m, match.list=sort(terms)))[, -c(1:2)])
输出:
1
aaa 0
aab 0
aac 0
aad 0
aba 0
.
.
.
dcc 0
dcd 0
dda 1
ddb 0
ddc 0
ddd 0
该函数gregexpr
为您提供模式的每个匹配项的位置。
你可以这样做:
a <- c("a","b","c")
b <- matrix(outer(a,a,paste,sep=""),ncol=1)
patterns <- matrix(outer(a,b,paste,sep=""),ncol=1)
m<-"abcdabcdbcadacbddabcc..."
positions <- function(pattern, text)
gregexpr(pattern, text)[[1]][1]
sapply(patterns, positions, text=m)