【发布时间】:2020-04-17 18:33:19
【问题描述】:
在 map() 和 lapply 中使用 which() 和 which.min 存在这个问题,我只得到一个数字作为输出,但是,有多个向量值满足条件。 数据
library(dplyr)
library(purrr)
foo <- dplyr::tibble(a=c("a","b",NA),b=c("a","b","c"),colC=c("a",NA,"c"))
bar <- dplyr::tibble(a=c("a","b",NA),b=c("a","b","c"),colC=c("a",NA,"c"))
all_tibbles <- c("foo","bar")
mget(all_tibbles)
$foo # A tibble: 3 x 3 a b colC <chr> <chr> <chr> 1 a a a 2 b b NA 3 NA c c $bar # A tibble: 3 x 3 a b colC <chr> <chr> <chr> 1 a a a 2 b b NA 3 NA c c
mget(all_tibbles) %>%
map(~ rowSums(!is.na(.x)))
$foo [1] 3 2 2 $bar [1] 3 2 2
mget(all_tibbles) %>% map(~ rowSums(!is.na(.x))) %>% map(~ which.min(.x))
lapply(mget(all_tibbles) %>% map(~ rowSums(!is.na(.x)) ),which.min)
$foo [1] 2 $bar [1] 2
如您所见,肯定不止第二列。我期待 which.min 输出 2 3
【问题讨论】:
-
来自
?which.min:“确定位置,即(第一个)数字(或逻辑)向量的最小值或最大值的索引。”
标签: r list dataframe dplyr tidyverse