使用dplyr';s选择引用变量名的位置
通常我会选择变量的子集,其中子集是函数的结果。在这个简单的例子中,我首先得到与宽度特征相关的所有变量名使用dplyr';s选择引用变量名的位置,r,dplyr,R,Dplyr,通常我会选择变量的子集,其中子集是函数的结果。在这个简单的例子中,我首先得到与宽度特征相关的所有变量名 library(dplyr) library(magrittr) data(iris) width.vars <- iris %>% names %>% extract(grep(".Width", .)) 能够使用这些返回作为选择列的一种方式是很有用的(虽然我知道contains()及其同级存在,但我
library(dplyr)
library(magrittr)
data(iris)
width.vars <- iris %>%
names %>%
extract(grep(".Width", .))
能够使用这些返回作为选择列的一种方式是很有用的(虽然我知道contains()
及其同级存在,但我想执行大量更复杂的子集,为了本例的目的,这个示例变得很简单
如果我试图使用此函数作为选择列的方法,则会发生以下情况:
iris %>%
select(Species,
width.vars)
Error: All select() inputs must resolve to integer column positions.
The following do not:
* width.vars
如何使用
dplyr::select
和存储为字符串的变量名向量?首先,您可以使用
iris %>% select(Species, contains(".Width"))
不需要单独创建名称向量。但是如果确实有列列表作为字符串名称,则可以这样做
width.vars <- c("Sepal.Width", "Petal.Width")
iris %>% select(Species, one_of(width.vars))
width.vars%选择(物种,一个(width.vars))
有关所有可用选项,请参见
?选择帮助页面。在dplyr
中,大多数命令都有一个替代版本,该版本以接受字符串作为输入的“\u”结尾;在本例中,选择
。这些通常是以编程方式使用dplyr
时必须使用的
iris %>% select_(.dots=c("Species",width.vars))
谢谢你的回答,但正如我在问题中所说的,我知道select
,我对那些我想对一组变量名执行更复杂的函数的情况很感兴趣。因此,这也是一个所能做的,如上所示。
iris %>% select_(.dots=c("Species",width.vars))