PU
так-то можно и в data.table это перегнать и .N сделать
Size: a a a
PU
PU
ГД
PU
VV
AP
PU
VV
VV
VV
PD
В
АК
Rcpp
.PU
АК
АК
ГД
N = 10000
set.seed(123)
matr = matrix(
sample(0:31, N*3, replace = TRUE),
nrow = N
)
splitter = matr[,3]*100*100 + matr[,2]*100 + matr[,1]
res = tabulate(splitter)
which(splitter == which.max(res))
АК
N = 10000
set.seed(123)
matr = matrix(
sample(0:31, N*3, replace = TRUE),
nrow = N
)
splitter = matr[,3]*100*100 + matr[,2]*100 + matr[,1]
res = tabulate(splitter)
which(splitter == which.max(res))
which.max
вернёт первую и не гарантирует стабильность результата.АК
N = 10000
set.seed(123)
matr = matrix(
sample(0:31, N*3, replace = TRUE),
nrow = N
)
splitter = matr[,3]*100*100 + matr[,2]*100 + matr[,1]
res = tabulate(splitter)
which(splitter == which.max(res))
PU
set.seed(123)
x <- matrix(nrow = 10, ncol = 3, data = sample(2, 30, replace = TRUE))
mx <- x
library(data.table)
f_dt <- function(mx) {
mx <- as.data.frame(mx)
setDT(mx)
mx <- mx[, .N, by = list(V1, V2, V3)][order(-N)][1]
matrix(nrow = 1, ncol = 3, data = unlist(mx[, list(V1, V2, V3)]))
}
f_dt(x)
f_base <- function(mx) {
mx <- paste(mx[, 1], mx[, 2], mx[3])
mx <- sort(table(mx), decreasing = TRUE)
mx <- names(mx[1])
mx <- as.numeric(strsplit(mx, '\\s')[[1]])
matrix(nrow = 1, ncol = 3, data = mx)
}
f_base(x)