我有一个矩阵:
A<-t(matrix(
c(0, 0, 1,
0, 0, 0,
0, 0, 1,
0, 0, 1,
0, 0, 0,
1, 1, 0), 3, 6))
我需要保留只出现一次的列.因此,预期结果只是第三列:(1,0,1,1,0,0).
我已经找到了unique和duplicated函数,但我需要更强大的功能来删除所有出现多次的列(在我的示例中是第1列和第2列).
我有一个矩阵:
A<-t(matrix(
c(0, 0, 1,
0, 0, 0,
0, 0, 1,
0, 0, 1,
0, 0, 0,
1, 1, 0), 3, 6))
我需要保留只出现一次的列.因此,预期结果只是第三列:(1,0,1,1,0,0).
我已经找到了unique和duplicated函数,但我需要更强大的功能来删除所有出现多次的列(在我的示例中是第1列和第2列).
看起来我们需要双倍duplicated
.
A[, !(duplicated(t(A)) | duplicated(t(A), fromLast = TRUE)), drop = FALSE]
[,1]
[1,] 1
[2,] 0
[3,] 1
[4,] 1
[5,] 0
[6,] 0
这个 idea 也适用于向量.
x <- c(1, 1, 2, 3, 4, 3, 4, 5)
x[!(duplicated(x) | duplicated(x, fromLast = TRUE))]
[1] 2 5