按值子集 R 中的距离矩阵
Subset a distance matrix in R by values
我有一个非常大的距离矩阵 (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)
我有一个非常大的距离矩阵 (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)