我想知道如何将矢量的1个元素与另一个矢量中的所有元素进行比较.举个例子:假设
x <- c(1:10) y <- c(10,11,12,13,14,1,7)
现在我可以比较元素
x == y [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
但是我想比较y的所有元素和x的特定元素
x[7] == y [1] FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
这可能吗?
你的意思是这样的吗?
x <- 1:10 y <- c(10,7,11,12,13,14,15,16,17,18) res <- outer(x, y, `==`) colnames(res) <- paste0("y=", y) rownames(res) <- paste0("x=", x)
这给你以下矩阵:
y=10 y=7 y=11 y=12 y=13 y=14 y=15 y=16 y=17 y=18 x=1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE x=2 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE x=3 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE x=4 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE x=5 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE x=6 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE x=7 FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE x=8 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE x=9 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE x=10 TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
如果你想在dimnames是因为y[1]
使用
colnames(res) <- paste0("y[", seq_along(y), "]") rownames(res) <- paste0("x[", seq_along(x), "]")
这给你:
y[1] y[2] y[3] y[4] y[5] y[6] y[7] y[8] y[9] y[10] x[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE x[2] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE x[3] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE x[4] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE x[5] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE x[6] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE x[7] FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE x[8] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE x[9] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE x[10] TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
要获得索引使用which
如下:
which(res) [1] 10 17
由于以行方式R
保存矩阵,因此结果为10和17.如果希望x和y组件中的索引使用:
which(res, arr.ind = TRUE) row col x=10 10 1 x=7 7 2