r - df <- mpg, col_name <- hwy, 如何调用 mpg$hwy?df[col_name] 不起作用
问题描述
我想打电话给 filter(df, col_name == value)
,filter(mpg, hwy == 27)
但是
df <- mpg
col_name <- 'hwy'
value <- 27
col <- df[col_name]
filter(df, col == value)
产生错误
错误:filter()
输入有问题..1
。i 输入..1
是col == value
。x object 'value' not found 运行rlang::last_error()
以查看错误发生的位置。
我怎样才能纠正col_name <- df[col_name]
它不会产生这个错误?我注意到 typeof() 和 class() 对 col (list; tbl_df, tbl, data.frame) 和 mpg$df (int;int) 产生不同的结果。如何将 col(类 tibble 和类型列表的对象)更改为与 mpg$df (int) 相同的类型?
rlang::last_error()
给了:
<error/dplyr_error>filter()
输入问题..1
。
i 输入..1
是.data[["hwy"]] == value
。
x 列hwy
未在.data
回溯:
运行rlang::last_trace()
以查看完整的上下文。
解决方案
我们可以使用.data
library(dplyr)
filter(df, .data[[col_name]] == value)
-输出
# A tibble: 14 x 11
manufacturer model displ year cyl trans drv cty hwy fl class
<chr> <chr> <dbl> <int> <int> <chr> <chr> <int> <int> <chr> <chr>
1 audi a4 3.1 2008 6 auto(av) f 18 27 p compact
2 audi a4 quattro 2 2008 4 auto(s6) 4 19 27 p compact
3 chevrolet malibu 2.4 1999 4 auto(l4) f 19 27 r midsize
4 hyundai sonata 2.4 1999 4 manual(m5) f 18 27 r midsize
5 hyundai tiburon 2 2008 4 auto(l4) f 20 27 r subcompact
6 nissan altima 2.4 1999 4 auto(l4) f 19 27 r compact
7 nissan altima 3.5 2008 6 manual(m6) f 19 27 p midsize
8 pontiac grand prix 3.8 1999 6 auto(l4) f 17 27 r midsize
9 subaru forester awd 2.5 2008 4 manual(m5) 4 20 27 r suv
10 subaru impreza awd 2.5 2008 4 auto(s4) 4 20 27 r compact
11 subaru impreza awd 2.5 2008 4 manual(m5) 4 20 27 r compact
12 toyota camry 2.2 1999 4 auto(l4) f 21 27 r midsize
13 toyota camry solara 2.2 1999 4 auto(l4) f 21 27 r compact
14 toyota camry solara 3.3 2008 6 auto(s5) f 18 27 r compact
或转换为sym
bol 并评估 (!!
filter(df, !! rlang::sym(col_name) == value)
注意:这里我们使用
col_name <- "hwy"
推荐阅读
- sql - 如何通过在新数据库中迁移的外键关联两个表?
- matlab - 使用 jsondecode 时的额外文本
- android - 将 Android Studio 项目更新到 Kotlin 1.3
- c# - 使用 `in` 运算符从 id 列表中查找所有 MongoDB 文档
- c# - 身份服务器 4 access_token null
- android - Mockito + Espresso + Dagger2 => 运行 SDK 时的 ClassNotFoundException 低于目标 SDK
- java - 如何在java中将一个对象作为参数传递并将它的一些值与另一个对象进行比较
- unit-testing - 如何对这个用 golang 编写的 promptui 包进行单元测试?
- sql-server - 试图找到长时间运行的 SQL 代码的解决方案,我认为 NESTED SQL 语句是罪魁祸首
- python - Python 2 中的 Python 3 类型提示