r - 使用负 str_detect 过滤多列上的行时,any_vars 和 all_vars 谓词的用法不明确
问题描述
我正在建立一个网络:
from <- c("America, port unspecified", "Boston", "Chicago", "America, port unspecified")
to <- c("Europe, port unspecified", "Nantes", "Le Havre", "Lisbonn")
dataset <- data.frame(from, to)
library(dplyr)
我想用不包含未指定端口的行子集我的数据集:
from to
Boston Nantes
Chicago Le Havre
我试过这个:在下面的代码中,我在所有列中搜索字符串“未指定端口”。我想保留字符串“未指定端口”不存在于任何变量中的行。
dataset2 <- dataset %>%
filter_all(any_vars(!str_detect(., "port unspecified")))
结果 :
from to
Boston Nantes
Chicago Le Havre
America, port unspecified Lisbonn
我成功地尝试了下面的代码:
dataset3 <- dataset %>%
filter_all(all_vars(!str_detect(., "port unspecified")))
结果 :
from to
Boston Nantes
Chicago Le Havre
为什么 all_vars 给了我预期的结果而不是 any_vars ?
解决方案
library(dplyr)
dataset %>% filter_all(any_vars(!str_detect(., "port unspecified")))
这读作第 2、3、4 行的列 中"port unspecified"
不存在的选择行。any
而这
dataset %>% filter_all(all_vars(!str_detect(., "port unspecified")))
表示选择第 2 行和第 3行中"port unspecified"
不存在的行。all
希望这足够清楚,可以理解。
推荐阅读
- node.js - 节点续集:如何将同一个表包含到 2 列中
- html - 如何在网格中显示 Facebook 链接?
- node.js - api/products/getProducts 到 XML
- python - Eclipse中的PyDev“未指定项目解释器”错误
- windows - 在 Windows 10 上使用 Laradock 时,Xdebug 无法使用 Visual Studio 代码
- css - 如何删除出现在平板电脑视图中的标题中的白条
- python - Python中的Websockets服务器推送
- python - 无法导入 pyfirmata?
- haskell - 无法在 VS 代码的 ghci 解释器中加载 Prelude
- sql-server-2008 - 显式事务中的表重命名