R 包含某些列的行中的最小值

R 包含某些列的行中的最小值,r,R,假设我有一些数字如下: 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])}) 但是,我不知道如何扩展该语句,以便排除一列,并获得剩余列的最小值 您可以通过重塑来实现这一点: library(tidyr) library(dplyr) data

假设我有一些数字如下:

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])})

但是,我不知道如何扩展该语句,以便排除一列,并获得剩余列的最小值

您可以通过重塑来实现这一点:

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)

您可以在矩阵的子集上使用apply

apply(my.matrix[,c(2,3,5,6)],1,min)

在转换为
data.frame
之后,我们可以使用
pmin

 do.call(pmin, c(as.data.frame(my.matrix[,c('K1', 'K2', 'K4', 'K5')]),
                 list(na.rm=TRUE)))

或者使用
库(matrixStats)

数据
set.seed(24)
我的黑客帝国
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)))