Соответствует большому количеству слегка изменяющихся названий ресторанов в векторе «данных» соответствующему вектору «совпадений»:
Функция stringdistmatrix
в пакете stringdist
великолепна, но не хватает памяти для нескольких 10k x 10k, и мои данные больше.
Попытка as(stringdistmatrix(data, match),'sparseMatrix')
даст ожидаемый результат, но не хватает памяти. Следовательно, я хотел бы явно индексировать пары, используя sparseMatrix(i,j,x,dims,dimnames)
с x
, рассчитанным по adist()
или подобным расстоянием строки, в надежде, что оно уместится в памяти.
R
data <- c("McDonalds", "MacDonalds", "Mc Donald's", "Wendy's", "Wendys", "Wendy",
"Chipotle", "Chipotle's")
match <- c("McDonalds", "Wendys", "Chipotle")
Попытка:
library(Matrix)
library(stringdist)
idx <- expand.grid(a=data,b=match)
idx$row <- match(idx$a,idx$b)
idx$col <- match(idx$b,idx$a)
library(Matrix)
sparseMatrix(i=idx$row,
j=idx$col,
x=ifthen(adist(data,match)<2,1,0),
dims=c(7,3),
dimnames = list(data, match))
Надеялись на совпадение вывода:
library(stringdist)
as(ifelse(stringdistmatrix(data,match)<2,1,0),'sparseMatrix')