有人可以帮我给 %>% 一个功能吗

Can someone help me give a function to %>%

我正在尝试让 %>% 类似于这样的函数

phase<-csvdata%>%
    filter(csvdata$phase=="test")

或者像这样

mergedrows1<-phase%>%
    group_by(phase$subject,phase$phase)

我可以将数据框中的特定变量组合在一起。

%>% 管道的想法是将第一个参数(通常保留用于您在大多数管道友好函数中操作的数据框的名称)移到管道之前。换句话说,f(x, y) 等同于 x %>% f(y)。用简单的英语来说,可以将其视为“获取此数据然后应用此功能”。

您的代码存在的问题是,您在一个数据框中调用了一个变量两次,这让 dplyr 函数(如 filter()group_by() 感到困惑)。当您说 csvdata %>% 时调用数据框一次,当您说 csvdata$phase 时调用数据框一次。您不需要在 tidyverse 设置中使用 dataframe$variable。事实上,这正是管道希望您避免做的事情。

相反,您只需要执行以下操作:

phase <- csvdata %>%
  filter(phase == "test")

mergedrows1 <- phase %>%
  group_by(subject, phase)

此外,为数据框和数据框内的变量赋予相同的名称是个坏主意。 R 不会弄糊涂,但你或 reader 的代码会弄糊涂。