gpt4 book ai didi

r - 将二进制向量转换为二进制矩阵

转载 作者:行者123 更新时间:2023-12-04 22:27:05 24 4
gpt4 key购买 nike

我有一个二进制向量,其中包含有关某些事件是否发生以进行某些观察的信息:

v <- c(0,1,1,0)

我想要实现的是一个矩阵,其中包含有关此向量中所有双变量观测值对的信息。也就是说,如果两个观测值在向量 v 中都为 0 或都为 1,则它们应该在矩阵中得到 1。如果一个有 0,另一个有 1,否则他们应该得到 0。

因此,目标是这个矩阵:
     [,1] [,2] [,3] [,4]
[1,] 0 0 0 1
[2,] 0 0 1 0
[3,] 0 1 0 0
[4,] 1 0 0 0

主对角线是 0 还是 1 对我来说无关紧要。

是否有一种不需要 if 语句和 for 循环组合的高效而简单的方法来实现这一点? v 可能相当大。

谢谢!

最佳答案

我们可以使用 outer

out <- outer(v, v, `==`)
diag(out) <- 0L # as you don't want to compare each element to itself
out
# [,1] [,2] [,3] [,4]
#[1,] 0 0 0 1
#[2,] 0 0 1 0
#[3,] 0 1 0 0
#[4,] 1 0 0 0

关于r - 将二进制向量转换为二进制矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53553895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com