1

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

    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

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

    "n3" "n5"
    "n4" "n5"
    "n6" "n7"
    "n6" "n8"
    "n12" "n14"
    "n12" "n13"

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

4

2 回答 2

5

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

both <- cbind(as.vector(yncomp), as.vector(yn))
both[!is.na(both[, 1]), ]
于 2013-06-19T17:46:03.163 回答
1

如果您希望将结果对作为向量列表:

result <- mapply(c, yncomp, yn, SIMPLIFY=FALSE)
result[! is.na(names(result))]

# $n3
# [1] "n3" "n5"
# 
# $n6
# [1] "n6" "n8"
# 
# $n12
# [1] "n12" "n14"
# 
# $n4
# [1] "n4" "n5"
# 
# $n6
# [1] "n6" "n7"
# 
# $n12
# [1] "n12" "n13"
于 2013-06-19T17:46:32.007 回答