过滤矩阵以获得 R 中的唯一组合

问题描述 投票:0回答:1

我正在尝试进行过滤,一旦从矩阵顶部开始找到一对数字中的唯一数字,任何后续的对条目都会从矩阵中删除,只留下过滤后的数据。

T_data = c(7,9,8,10,2,10,5,9,1,8,2,1,4,7,5,4,2,5)

T_new = matrix(T_data,ncol=2,byrow=TRUE)

期望的输出: 7 9, 8 10, 2 1, 5 4

# Desired output
> matrix(c(7, 9, 8, 10, 2, 1, 5, 4), ncol = 2, byrow = TRUE)
     [,1] [,2]
[1,]    7    9
[2,]    8   10
[3,]    2    1
[4,]    5    4

我尝试编写自己的循环,但我认为在 R 中有一种简单的方法可以做到这一点?

r matrix filtering unique
1个回答
0
投票

您必须使用某种形式的迭代,因为您希望当(且仅当)一行包含新矩阵(而不是原始矩阵)中包含的值时将其排除。

您可以使用

Reduce()
来做到这一点:

Reduce(\(x,y) 
    if(any(x %in% y)) x else c(x, y), 
    asplit(T_new, 1)
) |> matrix(ncol = ncol(T_new), byrow = TRUE)

#      [,1] [,2]
# [1,]    7    9
# [2,]    8   10
# [3,]    2    1
# [4,]    5    4
© www.soinside.com 2019 - 2024. All rights reserved.