R中矩阵的组合元素

R中矩阵的组合元素,r,R,这是我的样本数据 > matrix a b c d W_1_N NA NA NA NA W_1_E 2 2 2 4 W_1_C 4 2 2 4 W_1_D NA NA NA NA 我必须组合矩阵中的元素以获得它们的列名对,其中一个元素是4,另一个是2,在同一行中 结果应该是这

这是我的样本数据

> matrix
              a     b     c     d 
W_1_N        NA    NA    NA    NA  
W_1_E         2     2     2     4   
W_1_C         4     2     2     4  
W_1_D        NA    NA    NA    NA  
我必须组合矩阵中的元素以获得它们的列名对,其中一个元素是4,另一个是2,在同一行中

结果应该是这样的

W_1_E  d  a
W_1_E  d  b
W_1_E  d  c
W_1_C  a  b
W_1_C  a  c
W_1_C  d  b
W_1_C  d  c
我只想要一对,其中一个元素是4,另一个元素是2,在同一行中
W_1_N
W_1_D
只有
NA
W_1_E
显示在3行中,因为样本数据中的行中有3对(4,2)。
W_1_C
有4对。我尝试使用循环,但不知道
data.frame
中应该包含什么

for (i in row(matrix)){
  for (j in col(matrixz)){
    if (matrix[i,j]==4){
      ram=data.frame(

      )
    }

  }
}
非常感谢您的帮助。

这里有一个想法:

library(tidyverse)

lst <- data.frame(m) %>%
  rownames_to_column("rn") %>%
  drop_na() %>%
  gather(key, value, -rn) %>%
  group_by(rn, value) %>%
  summarise(l = list(unique(key))) %>%
  split(.$rn)

do.call("rbind", lapply(lst, function(x) expand.grid(x$l[[1]], x$l[[2]])))

数据

m <- structure(c(NA, 2L, 4L, NA, NA, 2L, 2L, NA, NA, 2L, 2L, NA, NA, 
4L, 4L, NA), .Dim = c(4L, 4L), .Dimnames = list(c("W_1_N", "W_1_E", 
"W_1_C", "W_1_D"), c("a", "b", "c", "d")))
m
m <- structure(c(NA, 2L, 4L, NA, NA, 2L, 2L, NA, NA, 2L, 2L, NA, NA, 
4L, 4L, NA), .Dim = c(4L, 4L), .Dimnames = list(c("W_1_N", "W_1_E", 
"W_1_C", "W_1_D"), c("a", "b", "c", "d")))