Luc*_*ion 6 r pipe dplyr tidyverse
令人惊讶的是我没有找到这个简单问题的答案。我需要一种管道友好的方法来计算向量中非零元素的数量。
不带管道:
v <- c(1.1,2.2,0,0)
length(which(v != 0))
Run Code Online (Sandbox Code Playgroud)
当我尝试使用管道执行此操作时,出现错误
v %>% which(. != 0) %>% length
Error in which(., . != 0) : argument to 'which' is not logical
Run Code Online (Sandbox Code Playgroud)
dplyr 解决方案也会有所帮助
以下是一些不同的选项:
首先,我们可以使用{}您的原始形式:
v %>% {which(. != 0)} %>% length
#[1] 2
Run Code Online (Sandbox Code Playgroud)
或者我们可以使用{}允许我们重复.:
v %>% {.[. != 0]} %>% length
#[1] 2
Run Code Online (Sandbox Code Playgroud)
或者我们可以使用subsetBase R:
v %>% subset(. != 0) %>% length
#[1] 2
Run Code Online (Sandbox Code Playgroud)