在R

时间:2016-01-11 00:05:28

标签: r matrix

我用我的原始数据发布了一个问题但是它太多了,所以我将尝试一种更简单的方法。

我有一个矩阵,[80,190]。我的一行是Wins / Lossses。我想把我的矩阵子集成两个矩阵,一个只有胜利,一个只有损失。

我的数据看起来像这样

a <- c(1, 2, 3, 4, 5)
b <- c("W", "L", "W", "W", "L")
c <- c(2, 3, 4, 5, 6)
newmat <- rbind(a, b, c)

我尝试使用子集

subset(newmat, newmat[2, ] == "W")

返回此错误,

  

x[subset & !is.na(subset), vars, drop = drop] :(下标)逻辑下标中的错误太长

2 个答案:

答案 0 :(得分:2)

试试这个:

 newmat <- t(newmat)
 lapply(split(data.frame(newmat), newmat[,"b"]), t)
$L
  2   5  
a "2" "5"
b "L" "L"
c "3" "6"

$W
  1   3   4  
a "1" "3" "4"
b "W" "W" "W"
c "2" "4" "5"

答案 1 :(得分:0)

您可以尝试这样的事情:

winMatrix <- newmat[, which(newmat['b', ] == 'W')]
lossMatrix <- newmat[, which(newmat['b', ] == 'L')]