Emi*_*sen 0 brackets r pipe filter
我无法让管道和支架[]一起工作。我怀疑我不明白管道是如何工作的。
我试图用括号和竖线来回答以下问题:1952 年最富有的国家叫什么名字?(数据来自包gapminder)
我努力了:
1. df[df$year == 1970,] %>% df[df$money == max(df$money),]["country"]
2. df %>% filter(year=="1970") %>% df[df$money == max(df$money),]["country"]
3. df %>% filter(year=="1970") %>% filter(money == max(df$money))
Run Code Online (Sandbox Code Playgroud)
无需管道即可使用 - 所有线路均独立工作。我并不是在寻找问题的另一种解决方案,而是为了更好地理解管道和支架,并利用它们来解决问题。对于 1. 和 2. 我得到的错误是Error in xj[i] : invalid subscript type 'list',而对于 3 我得到一个空的数据框,这让我很困惑。
小智 5
有几种不同的方法可以解决这个问题,这些方法更具可读性。但是,如果您想使用管道和括号来了解它们的工作原理,那么下面的代码应该可以做到这一点。你就快到了。您可以使用“.” 运算符,表示要结转的管道之前最后一个进程的输出
df[df$year == 1970,] %>%
.[.$money == max(.$money),] %>%
.["country"]
Run Code Online (Sandbox Code Playgroud)