R/FMATCH.R

FMATCH <-
function(target, lexicon){	
	forms=data.frame(matrix(0, nrow=nrow(lexicon), ncol=nchar(target)), stringsAsFactors=FALSE)
	forms$remainder=nchar(lexicon$form)-nchar(target)
	forms$remainder[forms$remainder<0]=0
	forms$form=lexicon$form
	for (i in 1:nchar(target)){
		forms[,i]=gsub(paste('.{', i-1,'}(.).*', sep=''),'\\1',target)!=gsub(paste('.{', i-1,'}(.).*', sep=''),'\\1',forms$form)
	}
	max=nchar(target)+1
	forms[,1:max]=forms[,1:max]*t(replicate(nrow(forms), max:1))	
	forms$distance=rowSums(forms[,1:max])
	forms$fmatch=1/(1+forms$distance)
forms$fmatch
}

Try the MoLE package in your browser

Any scripts or data that you put into this service are public.

MoLE documentation built on May 2, 2019, 3:02 p.m.