我正在尝试进行过滤,一旦从矩阵顶部开始找到一对数字中的唯一数字,任何后续的对条目都会从矩阵中删除,只留下过滤后的数据。
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 中有一种简单的方法可以做到这一点?
您必须使用某种形式的迭代,因为您希望当(且仅当)一行包含新矩阵(而不是原始矩阵)中包含的值时将其排除。
您可以使用
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