我试图将两个矩阵中的元素配对,这两个矩阵由以下代码块生成:
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"
编辑:添加引号以避免混淆。 :)
答案 0 :(得分:5)
如果你想要一个双列矩阵(而不是逗号分隔值的向量),你可以使用这种方法:
both <- cbind(as.vector(yncomp), as.vector(yn))
both[!is.na(both[, 1]), ]
答案 1 :(得分: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"