【发布时间】:2015-01-27 15:24:15
【问题描述】:
我有一个数据框,并希望通过“this”列或“that”列以两种方式之一对其进行过滤。我希望能够将列名作为变量引用。我如何(在dplyr 中,如果有区别的话)我如何通过变量引用列名?
library(dplyr)
df <- data.frame(this = c(1, 2, 2), that = c(1, 1, 2))
df
# this that
# 1 1 1
# 2 2 1
# 3 2 2
df %>% filter(this == 1)
# this that
# 1 1 1
但是假设我想使用变量column 来保存“this”或“that”,并过滤column 的任何值。 as.symbol 和 get 都可以在其他情况下工作,但不是这样:
column <- "this"
df %>% filter(as.symbol(column) == 1)
# [1] this that
# <0 rows> (or 0-length row.names)
df %>% filter(get(column) == 1)
# Error in get("this") : object 'this' not found
如何将column 的值转换为列名?
【问题讨论】:
-
为什么要这样做?试图参数化变量的选择?
-
我有一个数据集,里面有两种类型的东西,每种都有不同的列。我想以这种方式处理事情,因为我正在使用 Shiny 进行交互式可视化,并且我想让人们选择要查看的事物类型,然后使用相同的代码来提取数据,传入基于列名称根据他们的选择。
-
几乎发布了我的问题并找到了这个:)