假设我有以下数据框:
a <- runif(10)
dd <- as.data.frame(t(a))
names(dd) <- c("ID", "a", "a2", "b", "b2", "f", "XXX", "1", "4", "8")
在
dplyr
中,有一种很好的选择多个列的方法。例如,要选择从列 a 到列 f 之间的列,可以使用以下代码:dd %>% dplyr::select(a:f)
在我的问题中,数据框的最后一部分的列可能会变化,但它们的名称始终是1到99之间的数字。然而,我似乎无法像上面那样做同样的技巧:
> dd %>% select(1:99)
Error: Position must be between 0 and n
> dd %>% select("1":"99")
Error: Position must be between 0 and n
因为使用
select()
会尝试以此方式按位置选择列。我希望能够获取一个数据框,其中包含介于a和f之间的所有列,以及标签为介于1和99之间的数字的列。 是否可以使用
select()
一次完成这个操作?
1
:99
这样的东西,即使第 99 列不在这个特定的数据集中? - Theodorselect_
并传递一个列名数组,这样你就可以像这样做:select_(.dots = colnames(dd)[colnames(dd) %in% as.character(1:99)])
作为一种解决方法。 - AlexR