在R中组合矩阵的元素

时间:2017-04-22 11:21:05

标签: 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个。

结果看起来应该是这样的

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_NW_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(

      )
    }

  }
}

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:2)

这是一个想法:

object SomeComp {
  trait Props{
    type T
    val t: T
    val onChange: T => Callback
  }

  // use Props#T if you need to reference T
  val component = ReactComponentB[Props]("SomeComp")...

  def apply[_T](_t: _T, _onChange: _T => Callback) = {
    val props = new Props {
      type T = _T
      val t = _t
      val onChange = _onChange
    }
    component(props)
  }
}

给出了:

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]])))

数据

#        Var1 Var2
#W_1_C.1    b    a
#W_1_C.2    c    a
#W_1_C.3    b    d
#W_1_C.4    c    d
#W_1_E.1    a    d
#W_1_E.2    b    d
#W_1_E.3    c    d