【问题标题】:reshape2 melt not producing all pairsreshape2 熔化不产生所有对
【发布时间】:2025-11-29 08:00:01
【问题描述】:

我有一个 332 x 332 距离矩阵,其中包含所有可能的站点对之间的距离。我需要将此矩阵转换为具有三列的 data.frame - start.id、end.id 和距离。

我已经尝试了 reshape2 包中的 melt 函数,但这并没有给出正确的结果

这是数据的sn-p

垫 72 79 82 83 116 119 120 127 128 137 143 144 146 147 150 151 152 153 157 160 161 72 NA 6.43 7.458 11.546 3.784 10.252 12.780 4.835 5.230 2.168 10.614 9.806 7.058 6.533 7.117 6.300 6.693 2.595 10.6385 3.280 5.3 79 NA NA 1.406 5.442 2.956 4.317 7.300 1.695 1.525 6.673 4.510 4.616 0.426 0.775 3.460 1.296 0.589 5.257 4.561 4.785 1.571 82 NA NA NA 5.656 4.101 4.213 7.152 2.840 2.554 6.410 4.601 3.767 1.447 1.796 2.694 1.400 1.610 5.947 4.652 5.452 2.495 83 NA NA NA NA 8.447 1.736 2.170 7.347 6.782 11.050 1.958 1.888 5.005 5.192 6.826 5.599 5.039 10.175 2.426 9.226 6.723 116 NA NA NA NA NA 7.156 9.684 1.739 2.134 4.741 7.860 6.710 3.359 3.779 4.626 3.204 3.939 3.327 7.911 3.702 2.242 119 NA NA NA NA NA NA 2.970 6.158 5.593 9.861 2.397 0.699 4.209 4.396 5.637 4.410 4.243 8.986 2.403 8.037 5.534 120 NA NA NA NA NA NA NA 8.418 7.853 12.101 3.409 2.959 6.477 6.664 6.962 6.670 6.511 11.315 3.899 10.274 7.794 127 NA NA NA NA NA NA NA NA 1.411 5.137 6.358 5.734 2.201 2.277 3.903 2.176 2.437 3.721 6.409 4.095 1.519 128 NA NA NA NA NA NA NA NA NA 5.131 5.629 4.973 1.545 1.884 3.187 1.415 1.708 3.715 5.680 4.089 0.803 137 NA NA NA NA NA NA NA NA NA NA 12.152 8.855 7.651 8.071 5.996 5.377 8.231 1.744 12.203 1.821 4.729 143 NA NA NA NA NA NA NA NA NA NA NA 1.956 3.707 3.894 5.632 4.405 3.741 8.981 0.489 8.032 5.529 144 NA NA NA NA NA NA NA NA NA NA NA NA 3.902 4.089 4.937 3.710 3.936 8.286 2.096 7.337 4.834 146 NA NA NA NA NA NA NA NA NA NA NA NA NA 0.348 3.695 1.695 0.508 5.307 4.480 5.681 1.922 147 NA NA NA NA NA NA NA NA NA NA NA NA NA NA 4.104 2.092 0.803 5.932 4.378 6.306 2.371 150 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1.818 3.474 4.786 5.697 3.745 1.793 151 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 1.792 4.554 5.008 3.682 1.102 152 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 6.111 3.971 5.178 1.964 153 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 8.798 0.684 3.513 157 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 8.467 5.964 160 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 3.153 161 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 164 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 167 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 168 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 173 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 174 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 195 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 212 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 216 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 217 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 218 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 223 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 224 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 225 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 228 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 229 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 232 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 233 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 236 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 237 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 238 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 239 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 241 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 242 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 243 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 244 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 245 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 247 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 248 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 249 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 164 167 168 173 174 195 212 216 217 218 223 224 225 228 229 232 233 236 237 238 72 2.978 3.446 4.112 1.401 5.321 7.529 3.404 10.426 10.561 10.305 4.915 7.890 3.839 2.611 5.804 9.826 10.006 5.368 5.180 4.75 79 6.082 4.951 3.242 5.981 4.483 1.425 3.270 4.322 4.457 4.201 3.054 1.786 3.031 5.689 1.885 3.722 3.902 2.609 3.018 2.657 82 6.472 6.024 3.932 6.671 4.572 1.289 4.415 4.413 4.003 4.326 3.744 0.734 4.176 5.950 2.055 3.813 3.993 2.972 3.039 3.802 83 9.689 9.241 8.160 10.899 8.090 5.151 8.634 2.960 3.386 1.208 7.972 5.160 8.395 9.924 6.283 2.360 1.589 6.746 6.813 8.021 116 4.921 3.868 1.314 3.660 3.600 4.775 0.791 7.672 6.946 7.551 1.819 5.136 0.743 4.554 2.708 7.072 7.252 3.086 2.745 1.619 119 8.500 8.052 6.971 9.710 6.901 4.355 7.793 2.164 2.197 1.815 6.783 4.364 7.554 8.735 5.094 1.564 1.744 5.557 5.624 7.180 120 10.740 10.292 9.231 11.970 8.840 6.623 10.053 4.432 4.457 2.676 9.043 6.632 9.814 11.439 7.354 3.832 3.057 7.668 7.735 9.4 127 5.317 4.261 1.706 4.445 3.993 3.273 1.604 6.170 6.305 6.049 1.518 3.634 1.365 4.950 1.985 5.570 5.750 2.363 2.444 0.991 128 5.311 4.255 1.700 4.439 3.987 2.544 2.522 5.441 5.209 5.320 1.512 2.905 2.283 4.944 1.269 4.841 5.021 1.993 2.349 1.909 137 1.448 1.987 5.308 1.514 4.296 9.067 5.083 11.964 9.091 9.414 4.639 9.428 5.035 1.081 4.693 11.364 11.544 4.530 4.425 5.91 143 8.495 8.047 6.966 9.705 6.896 3.853 7.336 1.248 1.312 0.903 6.778 3.862 7.097 8.730 5.089 1.032 1.212 5.552 5.619 6.723 144 7.800 7.352 6.271 9.010 6.201 4.048 7.093 1.857 1.497 1.565 6.083 4.057 6.854 8.035 4.394 1.257 1.437 4.857 4.924 6.480 146 6.903 5.847 3.292 6.031 4.882 1.344 3.790 4.241 4.376 4.120 3.104 1.705 3.551 6.536 2.284 3.641 3.821 3.008 3.417 3.177 147 7.528 6.472 3.917 6.656 6.204 0.954 3.815 4.139 4.274 4.018 3.729 1.315 3.576 7.161 2.685 3.539 3.719 3.409 4.655 3.202 150 4.211 3.763 3.355 5.803 2.311 3.889 4.076 5.458 4.774 5.097 3.167 3.334 3.834 4.910 1.374 4.858 5.038 1.565 1.633 3.929 151 4.888 3.848 2.539 5.278 3.289 2.052 3.361 4.769 4.085 4.408 2.351 2.235 3.122 4.586 0.691 4.169 4.349 1.415 1.824 2.748 152 6.475 5.344 4.096 6.835 4.876 0.835 3.994 3.732 3.867 3.611 3.908 1.196 3.755 7.340 2.278 3.132 3.312 3.002 3.411 3.381 153 1.595 0.850 3.017 1.653 3.159 5.653 4.056 8.559 7.875 8.198 3.295 6.049 4.008 1.228 3.477 7.959 8.139 3.314 3.288 4.884 157 8.930 8.482 7.401 10.140 7.331 4.288 7.771 1.336 1.654 0.980 7.213 4.297 7.532 9.165 5.524 1.467 0.972 5.987 6.054 7.158 160 1.721 0.477 2.468 2.056 2.274 5.293 3.714 8.199 7.515 7.838 2.935 5.689 3.666 1.354 3.117 7.599 7.779 2.954 2.604 4.542 161 4.716 3.379 1.520 4.259 3.117 2.744 2.187 5.688 5.004 5.327 1.332 3.154 2.094 4.117 0.766 5.088 5.268 1.183 1.545 1.918 164 NA 1.280 3.582 1.578 3.447 6.407 4.828 9.313 8.629 8.952 4.049 8.390 4.780 0.698 4.231 8.713 8.893 4.068 3.718 5.656 167 NA NA 2.764 2.039 2.570 5.589 4.004 8.495 7.811 8.134 3.231 5.985 3.956 1.337 3.413 7.895 8.075 3.250 2.900 4.832 168 NA NA NA 3.357 2.286 4.184 2.174 7.090 6.406 6.729 1.587 4.580 2.126 3.280 2.008 6.490 6.670 1.845 1.657 2.517 173 NA NA NA NA 3.984 7.547 3.563 10.444 8.592 8.915 3.773 7.908 3.515 1.339 4.194 9.844 10.024 4.031 3.843 4.391 174 NA NA NA NA NA 4.963 3.386 6.871 6.187 6.510 2.605 6.042 3.338 2.747 2.345 6.271 6.451 1.626 1.394 3.730 195 NA NA NA NA NA NA 4.797 4.515 4.650 4.394 4.711 0.901 4.558 8.143 3.061 3.915 4.095 3.785 4.267 4.184 212 NA NA NA NA NA NA NA 7.599 6.873 7.478 1.746 5.063 0.670 4.481 2.635 6.999 7.179 3.013 2.672 1.546 216 NA NA NA NA NA NA NA NA 0.318 2.122 6.556 4.473 7.327 8.508 4.867 1.643 1.823 5.330 5.397 6.953 217 NA NA NA NA NA NA NA NA NA 1.933 6.367 4.284 7.138 8.319 4.678 1.454 1.634 5.141 5.208 6.764 218 NA NA NA NA NA NA NA NA NA NA 6.669 4.055 7.290 8.621 4.980 1.255 0.840 5.443 5.510 6.916 223 NA NA NA NA NA NA NA NA NA NA NA 4.562 0.866 4.136 1.945 6.498 6.678 1.852 1.630 1.127 224 NA NA NA NA NA NA NA NA NA NA NA NA 4.318 7.903 2.802 3.675 3.855 3.719 3.786 3.944 225 NA NA NA NA NA NA NA NA NA NA NA NA NA 4.720 2.493 6.567 6.747 2.871 2.530 1.114 228 NA NA NA NA NA NA NA NA NA NA NA NA NA NA 4.322 9.316 9.496 3.862 3.630 5.747 229 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 4.779 4.959 1.002 1.411 2.308 232 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 0.652 4.992 5.059 6.163 233 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 5.581 5.648 6.752 236 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 0.674 2.971 237 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 2.596 238 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 239 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 241 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 242 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 243 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 244 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 245 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 247 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 248 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 249 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 239 241 242 243 244 245 247 248 249 72 10.949 11.610 10.418 10.941 11.611 10.754 4.191 6.089 6.269 79 4.845 5.506 5.228 4.837 5.748 4.650 2.449 0.934 0.784 82 4.697 5.358 4.379 4.995 5.572 4.502 3.594 2.079 1.929 83 1.337 1.042 2.022 0.625 2.209 1.496 7.940 5.990 5.840 116 7.640 8.301 7.322 7.938 8.515 7.445 1.095 3.342 3.522 119 1.043 1.176 0.648 1.341 1.373 0.538 6.751 5.194 5.044 120 2.400 1.684 2.406 1.832 1.414 2.205 9.011 7.462 7.312 127 6.693 7.354 6.346 6.685 7.596 6.498 0.898 1.816 1.996 128 5.903 6.564 5.585 6.201 6.778 5.708 1.480 1.696 1.617 137 9.785 10.446 9.467 10.083 11.657 9.590 5.387 7.634 7.814 143 2.173 2.409 2.568 1.926 3.076 1.978 6.630 4.692 4.542 144 0.929 1.590 0.611 1.227 1.804 0.734 6.051 4.887 4.737 146 4.764 5.425 5.147 4.756 5.667 4.569 3.084 0.984 0.834 147 4.662 5.323 5.045 4.654 5.565 4.467 3.109 1.756 1.606 150 5.468 6.129 5.150 5.766 5.796 5.273 3.391 3.846 3.767 151 4.779 5.440 4.461 5.077 5.654 4.584 2.319 2.153 2.003 152 4.255 4.916 4.638 4.247 5.158 4.060 3.288 1.349 1.199 153 8.569 9.230 8.251 8.867 10.199 8.374 4.360 6.607 6.787 157 2.317 2.336 3.003 1.853 3.220 2.122 7.065 5.127 4.977 160 8.209 8.870 7.891 8.507 9.084 8.014 4.018 5.535 5.219 161 5.698 6.359 5.380 5.996 6.573 5.503 1.380 2.140 2.061 164 9.323 9.984 9.005 9.621 10.487 9.128 5.132 7.379 7.559 167 8.505 9.166 8.187 8.803 9.809 8.310 4.308 6.555 6.735 168 7.100 7.761 6.782 7.398 7.975 6.905 1.979 4.187 4.367 173 9.286 9.947 8.968 9.584 10.161 9.091 3.867 6.114 6.294 174 6.881 7.542 6.563 7.179 7.756 6.686 3.192 5.205 4.889 195 5.038 5.699 5.421 5.030 5.941 4.843 4.091 2.132 1.982 212 7.567 8.228 7.249 7.865 8.442 7.372 1.022 3.269 3.449 216 2.656 3.317 2.338 2.954 3.531 2.461 6.524 5.303 5.153 217 2.467 3.128 2.149 2.765 3.342 2.272 6.335 5.114 4.964 218 1.348 2.009 1.975 1.340 2.251 1.153 6.823 4.885 4.735 223 6.877 7.538 6.559 7.175 7.752 6.682 0.589 2.768 2.948 224 4.798 5.459 5.181 4.790 5.701 4.603 3.851 1.892 1.742 225 7.690 8.351 7.107 7.682 8.300 7.495 0.880 2.837 3.017 228 9.926 10.587 9.608 10.224 10.254 9.731 5.223 7.470 7.650 229 5.389 6.050 5.071 5.687 6.264 5.194 1.770 2.563 2.484 232 1.613 2.274 2.008 1.605 2.516 1.418 6.070 4.132 3.982 233 1.968 2.137 2.597 1.654 2.871 1.773 6.659 4.721 4.571 236 5.862 6.523 5.544 6.160 6.538 5.667 2.433 4.176 3.769 237 5.917 6.578 5.599 6.215 6.792 5.722 2.058 3.801 3.394 238 6.997 7.658 6.741 6.989 7.900 6.802 0.454 2.144 2.324 239 NA 1.363 1.555 0.656 1.831 0.733 6.969 5.031 4.881 241 NA NA 1.727 0.550 1.914 0.875 7.319 5.778 5.628 242 NA NA NA 1.812 1.192 0.920 6.663 5.472 5.322 243 NA NA NA NA 2.059 0.888 7.332 5.492 5.342 244 NA NA NA NA NA 1.612 8.418 6.869 6.719 245 NA NA NA NA NA NA 6.786 5.245 5.095 247 NA NA NA NA NA NA NA 2.341 2.521 248 NA NA NA NA NA NA NA NA 0.669 249 无 NA NA NA NA NA NA NA NA 测试=融化(dist_mat) 没有 id 变量;使用所有作为测量变量 头(测试) 变量值 1 72 不适用 2 72 不适用 3 72 不适用 4 72 不适用 5 72 不适用 6 72 不适用

如何获得所有可能的对和与之相关的值?

输入(垫) 结构(列表(`72` = c(NA_integer_,NA_integer_,NA_integer_, NA_integer_,NA_integer_,NA_integer_,NA_integer_,NA_integer_, NA_integer_, NA_integer_), `79` = c(6.43, NA, NA, NA, NA, NA, NA, NA, NA, NA), `82` = c(7.458, 1.406, NA, NA, NA, NA, NA, NA, NA, NA), `83` = c(11.546, 5.442, 5.656, NA, NA, NA, NA, NA, NA, NA), `116` = c(3.784, 2.956, 4.101, 8.447, NA, NA, NA, NA, NA, NA), `119` = c(10.252, 4.317, 4.213, 1.736, 7.156, NA, NA, NA, NA, NA), `120` = c(12.78, 7.3, 7.152, 2.17, 9.684, 2.97, NA, NA, NA, NA), `127` = c(4.835, 1.695, 2.84, 7.347, 1.739, 6.158, 8.418, NA, NA, NA), `128` = c(5.23, 1.525, 2.554, 6.782, 2.134, 5.593, 7.853, 1.411, NA, NA), `137` = c(2.168, 6.673, 6.41, 11.05, 4.741, 9.861, 12.101, 5.137, 5.131, NA)), .Names = c("72", "79", “82”,“83”,“116”,“119”,“120”,“127”,“128”,“137”),row.names = c(“72”, “79”、“82”、“83”、“116”、“119”、“120”、“127”、“128”、“137”)、class= “data.frame”)

【问题讨论】:

  • 那是什么标签?
  • 啊,是的,谢谢

标签: r matrix distance reshape reshape2


【解决方案1】:

问题在于您没有指定 id 变量。您可以通过将行名转换为变量然后melt 来创建一个:

mat$rn <- row.names(mat)
m1 <- melt(mat, id.vars = "rn")

给出:

> head(m1, 15)
    rn variable value
1   72       72    NA
2   79       72    NA
3   82       72    NA
4   83       72    NA
5  116       72    NA
6  119       72    NA
7  120       72    NA
8  127       72    NA
9  128       72    NA
10 137       72    NA
11  72       79  6.43
12  79       79    NA
13  82       79    NA
14  83       79    NA
15 116       79    NA

但是,您没有提供矩阵,而是在 dput 中提供了一个数据框。当您将 melt 函数应用于矩阵而不指定 id 变量时,它会按预期工作:

m <- as.matrix(mat)
m2 <- melt(m)

给出:

> head(m2,15)
   Var1 Var2 value
1    72   72    NA
2    79   72    NA
3    82   72    NA
4    83   72    NA
5   116   72    NA
6   119   72    NA
7   120   72    NA
8   127   72    NA
9   128   72    NA
10  137   72    NA
11   72   79  6.43
12   79   79    NA
13   82   79    NA
14   83   79    NA
15  116   79    NA

【讨论】:

  • 感谢 Jaap,我添加了相同数据的可重现样本。如果你在上面使用melt,它就不起作用,知道为什么吗?
  • @iskandarblue 您发布的数据很难阅读,因为您将数据分成几部分并将它们粘贴在一起。最好将dput(mat) 的输出包含在您的问题中。这让我很容易重现你的距离矩阵。
  • 数据太大,无法包含在问题中(它是一个 332 x 332 矩阵),这就是我删掉它的原因
  • @iskandarblue 你可以试试dput(mat[1:10,1:10])
  • 我加了dput(mat[1:10, 1:10])