r - 使用R中的括号和管道进行子集/过滤
问题描述
我无法让管道和支架[]
一起工作。我怀疑我不了解管道的工作原理。
我试图用方括号和竖线回答以下问题:这个国家叫什么名字,那是 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))
在没有管道的情况下使用它 - 所有线路单独工作。我不是在寻找解决问题的另一种方法,而是更好地理解管道和支架,并使用它们来解决问题。对于 1. 和 2. 我收到错误消息Error in xj[i] : invalid subscript type 'list'
,而对于 3 我得到一个让我困惑的空数据框。
解决方案
有几种不同的方法可以解决这个问题,它们更具可读性。但是,如果您想使用管道和括号来了解它们是如何工作的,那么下面的代码应该可以做到这一点。你快到了。您可以使用“。” 操作符,它表示要结转的管道之前最后一个进程的输出
df[df$year == 1970,] %>%
.[.$money == max(.$money),] %>%
.["country"]
推荐阅读
- assembly - 模拟器在运行以下代码时停止
- azure-logic-apps - 授权 Logic App Outlook API 连接到共享邮箱
- reactjs - Firestore 时间戳返回“对象作为反应子无效 {found: object with keys {seconds nanoseconds} 控制台
- javascript - 需要将输出拆分为 javascript 数组
- python - WebDriver 应该返回列表,但它正在返回 webelement
- python - Python - 如何在所有日志级别甚至外部异常打印堆栈跟踪?
- flutter - 如何使用 Flutter 中的字符串图像路径创建带有小图像的通知?
- java - 如何在 JPA 实体中自动存储日期?
- arrays - 在python中解析管道分隔的json数据
- java - 仅在通过集成测试用例进行测试时在骆驼路线上获取无效的有效负载异常