在Base R中,是否可以 取出(即只返回值) 最常出现的元素在以下矩阵中排?
更新: @ d.b看到您的解决方案似乎从下面的矩阵CI.test
中选择了错误的对。 CI
可以从您的解决方案中选择,CI.test
是用于从中挑选最常行的元素的矩阵:
N = 60 ; df = N-1 ; d = 3
f <- function (ncp, alpha, q, df) {
abs(suppressWarnings(pt(q = d*sqrt(N), df = df, ncp, lower.tail = FALSE)) - alpha)
}
a = mapply(c, as.list(20:30), as.list(-20:-30), SIMPLIFY = FALSE) # a list of paired values
CI.test <- matrix(NA, length(a), 2)
for(i in 1:length(a)){
CI.test[i,] = sapply(c(0.025, 0.975),
function(x) optimize(f, interval = a[[i]], alpha = x, q = d*sqrt(N), df = df, tol = 1e-10)[[1]])
}
CI = CI.test[which.max(ave(1:nrow(CI.test), do.call(paste, data.frame(CI.test)), FUN = seq_along)), ]
list(CI, CI.test)
答案 0 :(得分:2)
使用ave
计算对的出现次数并提取出现次数最多的次数
m = matrix(c(-5.904236, 7.547438, 3.386315, 7.547438, -7.420706,
7.547438, 3.386315, 7.547438), 4, 2)
m[which.max(ave(1:NROW(m), do.call(paste, data.frame(m)), FUN = seq_along)),]
#[1] 7.547438 7.547438
您可能需要舍入值
CI.test[which.max(ave(1:NROW(CI.test), do.call(paste, round(data.frame(CI.test), 3)),
FUN = seq_along)),]
#[1] 18.59838 27.83543