Matrix style extraction supports 'inner' and 'outer'(default) products

dist_extract(object, i, j, k, product = "outer")

Arguments

object

dist object

i

(integer vector) row positions

j

(integer vector) column positions

k

(integer vector) positions

product

(string) One among: 'inner', 'outer'(default)

Value

A matrix or vector of distances when product is 'outer' and 'inner' respectively

Details

In k-mode, both i and j should be missing and k should not be missing. In ij-mode, k should be missing and both i and j are optional. If i or j are missing, they are interpreted as all values of i or j (similar to matrix or dataframe subsetting). If i and j are of unequal length, the smaller one is recycled.

Examples

# examples for dist_extract # create a dist object temp <- dist(iris[,1:4]) attr(temp, "Labels") <- outer(letters, letters, paste0)[1:150] head(temp)
#> [1] 0.5385165 0.5099020 0.6480741 0.1414214 0.6164414 0.5196152
max(temp)
#> [1] 7.085196
as.matrix(temp)[1:5, 1:5]
#> aa ba ca da ea #> aa 0.0000000 0.5385165 0.509902 0.6480741 0.1414214 #> ba 0.5385165 0.0000000 0.300000 0.3316625 0.6082763 #> ca 0.5099020 0.3000000 0.000000 0.2449490 0.5099020 #> da 0.6480741 0.3316625 0.244949 0.0000000 0.6480741 #> ea 0.1414214 0.6082763 0.509902 0.6480741 0.0000000
dist_extract(temp, 1, 1)
#> aa #> aa 0
dist_extract(temp, 1, 2)
#> ba #> aa 0.5385165
dist_extract(temp, 2, 1)
#> aa #> ba 0.5385165
dist_extract(temp, "aa", "ba")
#> ba #> aa 0.5385165
dist_extract(temp, 1:10, 11:20)
#> ka la ma na oa pa qa #> aa 0.3741657 0.3741657 0.5916080 0.9949874 0.8831761 1.1045361 0.5477226 #> ba 0.8660254 0.4582576 0.1414214 0.6782330 1.3601471 1.6278821 1.0535654 #> ca 0.8831761 0.3741657 0.2645751 0.5000000 1.3638182 1.5874508 1.0099505 #> da 1.0000000 0.3741657 0.2645751 0.5196152 1.5297059 1.7146428 1.1661904 #> ea 0.4242641 0.3464102 0.6403124 0.9746794 0.9165151 1.0862780 0.5477226 #> fa 0.3464102 0.8124038 1.1618950 1.5716234 0.6782330 0.6164414 0.4000000 #> ga 0.8660254 0.3000000 0.4898979 0.6164414 1.3601471 1.4933185 0.9539392 #> ha 0.5000000 0.2236068 0.4690416 0.9055385 1.0440307 1.2369317 0.7000000 #> ia 1.2845233 0.6708204 0.4242641 0.3464102 1.7916473 1.9974984 1.4317821 #> ja 0.7874008 0.3464102 0.1732051 0.7280110 1.3114877 1.5556349 1.0099505 #> ra sa ta #> aa 0.1000000 0.7416198 0.3316625 #> ba 0.5477226 1.1747340 0.8366600 #> ca 0.5196152 1.2369317 0.7549834 #> da 0.6557439 1.3228757 0.8660254 #> ea 0.1732051 0.7937254 0.2645751 #> fa 0.5916080 0.3316625 0.3872983 #> ga 0.5099020 1.2083046 0.6480741 #> ha 0.2000000 0.8366600 0.4242641 #> ia 0.9273618 1.6124515 1.1489125 #> ja 0.5000000 1.1000000 0.7549834
dim(dist_extract(temp, 1:10, ))
#> [1] 10 150
dim(dist_extract(temp, , 1:10))
#> [1] 150 10
dist_extract(temp, 1:10, 11:20, product = "inner")
#> [1] 0.3741657 0.4582576 0.2645751 0.5196152 0.9165151 0.6164414 0.9539392 #> [8] 0.2000000 1.6124515 0.7549834
length(dist_extract(temp, 1:10, , product = "inner"))
#> [1] 150
length(dist_extract(temp, , 1:10, product = "inner"))
#> [1] 150
dist_extract(temp, c("aa", "ba", "ca"), c("ca", "da", "fa"))
#> ca da fa #> aa 0.509902 0.6480741 0.6164414 #> ba 0.300000 0.3316625 1.0908712 #> ca 0.000000 0.2449490 1.0862780
dist_extract(temp, c("aa", "ba", "ca"), c("ca", "da", "fa"), product = "inner")
#> [1] 0.5099020 0.3316625 1.0862780
dist_extract(temp, k = 1:3) # product is always inner when k is specified
#> [1] 0.5385165 0.5099020 0.6480741