dplyr:在NSE中按位置选择列

Jor*_*dal 10 select r dplyr nse

我正在尝试创建一个函数,根据它们的位置选择DF中的列.我将始终需要第一列,然后是DF的子集.我需要为每个子集选择一个对象.

到目前为止,我尝试了以下内容:

position <- "1,28:31"
DF %>%
  select_(.dots = position)
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

解析时出错(text = x):: 1:2:意外'x'

似乎问题是列位置的逗号分离.

有解决方法吗?

MrF*_*ick 23

您可以使用select索引的数字向量:

positions <- c(1,28:31)
DF %>% select(positions)
Run Code Online (Sandbox Code Playgroud)


Mos*_*afa 6

dplyr 的另一个解决方案:

DF %>%
  select(!!c(1, 28:31))
Run Code Online (Sandbox Code Playgroud)

比照:https://www.rdocumentation.org/packages/dplyr/versions/0.7.6/topics/select

您还可以与dplyr version 0.8

DF %>%
      select(1, 28:31)
Run Code Online (Sandbox Code Playgroud)


Eli*_*kas 1

 Select.by.pos <- function(pos, dt){

   return(dt[, pos])

 }
Run Code Online (Sandbox Code Playgroud)

pos 参数不应该是字符串,而应该是数字向量:) dt 是一个数据帧