在R中的两个矩阵中配对元素

qed*_*qed 1 r data-manipulation

我试图将两个矩阵中的元素配对,这两个矩阵由以下代码块生成:

    set.seed(29)
    y = rnorm(16)
    yn = paste('n', 1:16, sep='')
    y = embed(y, 3)
    yn = embed(yn, 3)
    ycomp = y[, rep(3, ncol(y))]
    yncomp = yn[, rep(3, ncol(y))]
    logitable = (ycomp - y) < 1
    yn[logitable] = NA
    yncomp[logitable] = NA
    yn
    #      [,1]  [,2]  [,3]
    # [1,] NA    NA    NA
    # [2,] NA    NA    NA
    # [3,] "n5"  NA    NA
    # [4,] NA    "n5"  NA
    # [5,] NA    NA    NA
    # [6,] "n8"  "n7"  NA
    # [7,] NA    NA    NA
    # [8,] NA    NA    NA
    # [9,] NA    NA    NA
    #[10,] NA    NA    NA
    #[11,] NA    NA    NA
    #[12,] "n14" "n13" NA
    #[13,] NA    NA    NA
    #[14,] NA    NA    NA
    yncomp
    #      [,1]  [,2]  [,3]
    # [1,] NA    NA    NA
    # [2,] NA    NA    NA
    # [3,] "n3"  NA    NA
    # [4,] NA    "n4"  NA
    # [5,] NA    NA    NA
    # [6,] "n6"  "n6"  NA
    # [7,] NA    NA    NA
    # [8,] NA    NA    NA
    # [9,] NA    NA    NA
    #[10,] NA    NA    NA
    #[11,] NA    NA    NA
    #[12,] "n12" "n12" NA
    #[13,] NA    NA    NA
    #[14,] NA    NA    NA
Run Code Online (Sandbox Code Playgroud)

预期的结果将是一个像这样的2列的矩阵

    "n3" "n5"
    "n4" "n5"
    "n6" "n7"
    "n6" "n8"
    "n12" "n14"
    "n12" "n13"
Run Code Online (Sandbox Code Playgroud)

编辑:添加引号以避免混淆.:)

Jea*_*ams 5

如果您想要一个双列矩阵作为结果(而不是逗号分隔值的向量),您可以使用此方法:

both <- cbind(as.vector(yncomp), as.vector(yn))
both[!is.na(both[, 1]), ]
Run Code Online (Sandbox Code Playgroud)