我正在尝试使用 tidyversedplyr 创建一个新列,该列是多个其他列的行的非零最小值,如果所有列都为0,则为0 . 简化示例:

df <- data.frame(
  aa = c(0, 0, 0),
  bb = c(0, 1, 2),
  cc = c(2, 5, 3)
)

新列应该是2,1和2.以下代码适用于这种情况,但对于较大的data.frames来说速度非常慢 .

df2 <- df %>% 
  select(aa, bb, cc) %>% 
  rowwise() %>% 
  do( (.) %>% as.data.frame %>% mutate(minOver0 = ifelse(sum(.)==0,0,min(.[. > 0]))) ) %>%
  ungroup

我该怎么做才能加快速度呢?