按范围和名称提取列 - R.

时间:2018-05-23 14:01:18

标签: r indexing range label multiple-columns

假设df有50列,从Col_1Col_50命名。

我正在尝试按名称和范围提取列,例如:

x <- df[,c("Col_1", "Col_3", "Col_7", "Col_8", "Col_12",
  which(colnames(df)=="Col_15"):which(colnames(df)=="Col_26"),
  which(colnames(df)=="Col_34"):which(colnames(df)=="Col_42"))]

如果我只使用名称或只使用索引范围,它就可以工作,但是当我同时使用这两个索引时,它会给出“未定义列选择”的错误。

2 个答案:

答案 0 :(得分:2)

我们可以使用select

中的tidyverse
library(tidyverse)
df %>%
   select(Col_1, Col_3, Col_7, Col_8, Col_12, col_15:col_26, col_34:col_42)

答案 1 :(得分:0)

假设Col_1 - Col_50的位置不是连续的而不是确切的1st-50th位置,那么base-R中的选项可能如下:

df[paste("Col",c(1, 3, 7, 8, 12, 15:26, 34:42), sep = "_")]