按值子集 R 中的距离矩阵

问题描述

我有一个非常大的距离矩阵 (3678 x 3678),当前编码为数据帧。列被命名为“1”、“2”、“3”等,行也是如此。所以我需要做的是找到小于 26 且不同于 0 的值,并将结果显示在具有两列的第二个数据框中:第一个带有索引,第二个带有值。例如:

            value
318-516   22.70601
... 

其中 318 是行索引,516 是列索引。

解决方法

好的,我正在尝试重现您的情况(注意:如果可以,使用 dput 命令包含几行数据总是有帮助的)。

您应该能够使用 filter 和一些简单的 tidyverse 命令(如果您不知道它们是如何工作的,请逐行运行它们,始终选择直到 %>% 的命令以检查什么他们正在做):

library(tidyverse)
library(tidylog) # gives you additional output on what each command does
# Creating some data that looks similar
data <- matrix(rnorm(25,mean = 26),ncol=5)
data <- as_tibble(data)
data <- setNames(data,c(1:5))

data %>% 
  mutate(row = row_number()) %>% 
  pivot_longer(-row,names_to = "column",values_to = "values",names_prefix = "V") %>% 
  # depending on how your column names look like,you might need to use a separate() command first
  filter(values > 0 & values < 26) %>% 
  
  # if you want you can create an index column as well
  mutate(index = paste0(row,"-",column)) %>% 
  
  # then you can get rid of the row and column
  select(-row,-column) %>% 
  # move index to the front
  relocate(index)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...