使用dplyr库在R管道中运行代码时出错

时间:2019-05-04 14:07:15

标签: r pipeline

我正在研究数据集(奥运会),我想创建一个具有特定条件的sub_dataset。为此,我使用了dplyr库,并且代码有效。问题是,如果我使用%>%更改代码以使其更具可读性,那么它将不再起作用。我粘贴了以下代码:

combination <- select(olympics, Sex, Season, Sport)

M_Summer <- combination %>%
  filter(Sex == "M", Season == "Summer") %>%
  mutate(Num_Sports = length(unique(M_Summer[["Sport"]]))) %>%
  select(-c(Sport))

如果我运行上面的代码,R显示此错误消息:

Error in mutate_impl(.data, dots): Evaluation error: object 'M_Summer' not found.

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

您正在尝试在尚未创建的管道中使用数据框,因此会出现错误。我们需要将代码分为两部分,以便代码的第一部分将创建数据框架,而代码的第二部分将使用由第一部分创建的数据框架。

M_Summer <- combination %>%
filter(Sex == "Men", Season == "Summer")
####Break the code    
M_Summer <-M_Summer %>% mutate(Num_Sports = length(unique(M_Summer$Sport))) %>%
select(-c(Sport))

要求您提供数据的抬头(df)或可复制的示例,以获取更准确的代码。如果您有任何疑问,请告诉我。

答案 1 :(得分:0)

在没有更多信息的情况下很难具体说明,但是您试图在制作数据框的函数中使用M-Summer数据框。 最好的选择可能是将其分为两个命令;

M_Summer <- combination %>%
  filter(Sex == "M", Season == "Summer") 
M_Summer <- mutate(Num_Sports = length(unique(M_Summer[["Sport"]]))) %>%
  select(-c(Sport))

基本上,只有在实际创建数据框之后,才能引用该数据框。