【问题标题】:how to ge the distances of one observation to all the others from a dist object?如何从 dict 对象获得一个观察到所有其他观察的距离?
【发布时间】:2014-03-13 17:32:19
【问题描述】:

假设我有一个 data.frame a(每个观察值都在一行中)并计算了距离矩阵。问题是,是否有任何函数可以将观测值 5 与所有其他观测值相距。

> a=data.frame(A=rnorm(10), B=rnorm(10), C=rnorm(10))
> b=dist(a)
> b
           1         2         3         4         5         6         7         8         9
2  1.6118634
3  0.4891468 1.3382692
4  1.2002947 1.7516061 0.9160975
5  1.8128570 0.3197837 1.5192406 1.7709168
6  0.7280433 1.2628696 0.4063128 1.2411639 1.4971098
7  1.7616767 0.7400666 1.4512844 1.4355922 0.5168996 1.5524980
8  3.1033274 3.3739578 2.7297046 2.2281075 3.3693333 2.7738859 3.1216145
9  2.0916857 1.6749526 1.6717408 2.0293415 1.8196557 1.3704288 1.9824870 2.4013682
10 1.5949320 1.7309838 1.1680365 0.6331770 1.7255615 1.3234977 1.4333926 1.7798153 1.6126823

【问题讨论】:

    标签: r distance


    【解决方案1】:

    只需将其转换为矩阵:

    as.matrix(b)[5,]
    

    【讨论】:

    • 如果矩阵很大,又不想占用大量内存怎么办?
    【解决方案2】:

    查看 pdist 包。它基本上返回一行 as.matrix(dist(x)) 将返回的内容......所以你不必计算所有内容。

    http://cran.r-project.org/web/packages/pdist/index.html

    【讨论】:

    • 注意pdist(...) 的语法很奇怪。要产生与@joran 相同的结果,您需要as.vector(pdist(a[5,],a)@dist)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多