i trying determine distance between everypoint in 1 data set vs other data set in r. each data set has x , y parameter. have been converting data sets data frames , finding distance. current code creates large matrix due listing both data sets columns , rows. need identify specific part of matrix care answers, there way put dsa columns , dsb rows. whould cut matrix in 1/4 since data sets contain thousands of points each whould cut down time algorithum run
here code using
tumor<-data.frame(dsa[,c ("x_parameter","y_parameter")]) cells<-data.frame(dsb[,c ("x_parameter","y_parameter")]) distances<-as.matrix(dist(rbind(tumor,cells))) row.start<-nrow(tumor)+1 row.end<-nrow(tumor)+nrow(cells) col.start<-1 col.end<-nrow(tumor) distances[row.start:row.end, col.start:col.end] d<- distances[row.start:row.end, col.start:col.end]
try flexclust::dist2
:
n_tumor = 2000 n_cells = 2000 tumor = matrix(runif(n_tumor * 2), n_tumor, ) cells = matrix(runif(n_cells * 2), n_cells, ) t_dist = system.time({ distances<-as.matrix(dist(rbind(tumor,cells))) row.start<-nrow(tumor)+1 row.end<-nrow(tumor)+nrow(cells) col.start<-1 col.end<-nrow(tumor) d <- distances[row.start:row.end, col.start:col.end] })[3] require(flexclust) t_dist2 = system.time({d2 = dist2(x = cells, y = tumor, method = "euclidean")})[3] t_dist # 1.477 t_dist2 # 0.244 identical(unname(d), d2) # true
edit: alternative proxy::dist
.
Comments
Post a Comment