L. *_*ker 3 r matrix dplyr tidyverse
我有一个由 0 和 1 组成的邻接矩阵,表示并列提名。有些提名是不互惠的,因此矩阵是不对称的。
如果单元格值没有对称匹配,我想将单元格值从 1 重新编码为 0。
样本小矩阵:
[,1] [,2] [,3] [,4]
[1,] 0 1 0 1
[2,] 0 0 1 0
[3,] 0 0 0 1
[4,] 1 0 1 0
Run Code Online (Sandbox Code Playgroud)
所需输出:
[,1] [,2] [,3] [,4]
[1,] 0 0 0 1
[2,] 0 0 0 0
[3,] 0 0 0 1
[4,] 1 0 1 0
Run Code Online (Sandbox Code Playgroud)
首先是数据,然后一行行即可完成。将0/1矩阵视为逻辑 AND 及其转置。+()强制为整数,技巧就完成了。
x <- scan(text=" 0 1 0 1
0 0 1 0
0 0 0 1
1 0 1 0")
x <- matrix(x, nrow = 4, byrow = TRUE)
y <- +(x & t(x))
y
#> [,1] [,2] [,3] [,4]
#> [1,] 0 0 0 1
#> [2,] 0 0 0 0
#> [3,] 0 0 0 1
#> [4,] 1 0 1 0
Run Code Online (Sandbox Code Playgroud)
由reprex 包于 2022 年 2 月 9 日创建(v2.0.1)