#> $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ... #> $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3 ... #> $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 ... #> $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 ...
some() 和 every() 用于判断谓词对于部分元素或全部元素是否为真:
x <- list(1:5, letters, list(10)) x %>% some(is_character) #> [1] TRUE x %>% every(is_vector) #> [1] TRUE
detect() 查找第一个使谓词为真的元素;detect_index() 返回其位置:
x <- sample(10) x #> [1] 8 7 5 6 9 2 10 1 3 4 x %>% detect(~ . > 5) #> [1] 8 x %>% detect_index(~ . > 5) #> [1] 1
head_while() 和 tail_while() 在谓词为真时,从向量的开头或结尾取出元素:
x %>% head_while(~ . > 5) #> [1] 8 7 x %>% tail_while(~ . > 5) #> [1] integer(0)
Reduce 和 Accumulate
有时你有一个复杂的列表,希望通过反复应用一个将一对元素归约为单个元素的函数,将其化简为一个简单的列表。当你想将双表的 dplyr 动词应用于多个表时,这非常有用。例如,你可能有一个数据框列表,