我们说我有一些数字如下:
ID K1 K2 K3 K4 K5
1 0.1 0.2 0.15 0.25 0.35
我想从列K1,K2,K4和K5获得最小值 我知道如何获得连续所有值的最小值:
apply(my.matrix, 1, FUN = function(x) {min(x[x > 0])})
但是,我不知道如何扩展该声明,以便我可以排除一列并获得剩余列的最小值。
答案 0 :(得分:3)
我们可以在转换为pmin
data.frame
do.call(pmin, c(as.data.frame(my.matrix[,c('K1', 'K2', 'K4', 'K5')]),
list(na.rm=TRUE)))
或使用rowMins
library(matrixStats)
library(matrixStats)
rowMins(my.matrix[,c('K1', 'K2', 'K4', 'K5')], na.rm=TRUE)
set.seed(24)
my.matrix <- matrix(sample(c(1:9, NA), 4*10, replace=TRUE),
ncol=10, dimnames=list(NULL, paste0('K', 1:10)))
答案 1 :(得分:1)
您可以在矩阵的子集上使用apply。
struct node*
答案 2 :(得分:0)
您可以通过重塑来完成此操作:
library(tidyr)
library(dplyr)
data %>%
gather(K_number, K, K1:K5) %>%
group_by(ID) %>%
filter(K_number != "K3") %>%
filter(K == min(K) ) %>%
right_join(data)