12

マトリックスで 2 回以上表されているすべての行を識別しようとしています。

例えば:

m <- matrix(c(1,2,1,3,1,4,1,2,2,3,2,3,1,2,5), ncol = 3)
m
duplicated(m[,1])

出力:

     [,1] [,2] [,3]
[1,]    1    4    2
[2,]    2    1    3
[3,]    1    2    1
[4,]    3    2    2
[5,]    1    3    5

[1] FALSE FALSE  TRUE FALSE  TRUE

ただし、その出力は必要ありません。私が欲しい:

[1] TRUE FALSE TRUE FALSE TRUE

行 [1,1] の値が m の列 1 に 3 回出現するためです。

4

2 に答える 2

3

多くのアプローチの 1 つを次に示します。

m <- matrix(c(1,2,1,3,1,4,1,2,2,3,2,3,1,2,5), ncol = 3)

x <- table(m[,1])
as.character(m[,1]) %in% names(x)[x > 1]

## > as.character(m[,1]) %in% names(x)[x > 1]
## [1]  TRUE FALSE  TRUE FALSE  TRUE

# or wrap it up as function:

FUN <- function(vec) {
    x <- table(vec)
    as.character(vec) %in% names(x)[x > 1]
}

FUN(m[, 1])

## > FUN(m[, 1])
## [1]  TRUE FALSE  TRUE FALSE  TRUE
于 2013-04-28T17:56:17.253 に答える