【问题标题】:Concatenate in a dplyr filter在 dplyr 过滤器中连接
【发布时间】:2018-04-27 03:00:44
【问题描述】:

我对应用串联的理解一定有失误。由于某种原因,此命令有效

vec <- as.matrix(df %>%filter(Sex == "male" & !str_detect(Title, "Rev.")) %>% select(PassengerId))

但是当我运行一个类似的命令来包含多个可能的标题时它不起作用:

miss.weirdo_vec <- as.matrix(weirdos %>%filter(Sex == "female" & str_detect(Title, c("Ms"|"Mlle"|"Mme"|"Dona"))) select(PassengerId))

错误:出现意外符号: " 过滤器(Sex == "female" & str_detect(Title, c("Ms"|"Mlle"|"Mme"|"Dona"))) 选择”

这样做的目的是创建一个由女性乘客 ID 组成的矩阵,这些乘客 ID 具有四个连接头衔中的任何一个。任何有关获得正确代码的帮助都会很棒,但此外,我们将非常感谢您解释为什么这不起作用。

谢谢。

【问题讨论】:

  • 嗨。我们总是非常感谢有一些示例数据来创建可重现的错误。
  • c("Ms"|"Mlle"|"Mme"|"Dona") 显然不起作用,因为您使用符号 ,(逗号)而不是“|”连接。我还猜想在这种情况下您需要使用%in% c(...) 指定您的过滤器

标签: r dplyr concatenation stringr


【解决方案1】:

您很可能想要这个,但我无法在不知道您的数据集的情况下进行验证:

miss.weirdo_vec <- as.matrix(weirdos %>%
                               filter(Sex == "female",
                                      Title %in% c("Ms","Mlle","Mme","Dona")) %>%
                               select(PassengerId))

【讨论】:

  • 这正是我想要的。我错误地使用 & 运算符而不是 , 用于多个 dplyr::filter 参数。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-12
  • 2021-11-30
相关资源
最近更新 更多