我正在尝试创建一个函数,根据它们的位置选择DF中的列。我将始终需要第一列,然后是DF的子集。我需要为每个子集选择一个对象。
到目前为止,我已尝试过以下内容:
{{1}}
但是我收到以下错误:
解析时出错(text = x):: 1:2:意外' x'
似乎问题是列位置的逗号分隔。
有解决方法吗?
答案 0 :(得分:20)
您可以将select
与索引的数字向量一起使用:
positions <- c(1,28:31)
DF %>% select(positions)
答案 1 :(得分:2)
使用mtcars
和:
auto
作为我的第一栏 mtcars %>% mutate(auto = row.names(.)) %>%
select(auto, 1, contains('a')) %>%
dplyr::filter(rowSums(.[-1]) > mean(rowSums(.[-1])))
auto mpg drat am gear carb
1 Mazda RX4 21.0 3.90 1 4 4
2 Mazda RX4 Wag 21.0 3.90 1 4 4
3 Datsun 710 22.8 3.85 1 4 1
4 Merc 240D 24.4 3.69 0 4 2
5 Merc 230 22.8 3.92 0 4 2
6 Merc 280 19.2 3.92 0 4 4
7 Fiat 128 32.4 4.08 1 4 1
8 Honda Civic 30.4 4.93 1 4 2
9 Toyota Corolla 33.9 4.22 1 4 1
10 Fiat X1-9 27.3 4.08 1 4 1
11 Porsche 914-2 26.0 4.43 1 5 2
12 Lotus Europa 30.4 3.77 1 5 2
13 Ferrari Dino 19.7 3.62 1 5 6
14 Maserati Bora 15.0 3.54 1 5 8
15 Volvo 142E 21.4 4.11 1 4 2
答案 2 :(得分:0)
Select.by.pos <- function(pos, dt){
return(dt[, pos])
}
pos参数不应该是字符串而是数字矢量:) dt是数据帧
答案 3 :(得分:0)
使用dplyr的另一种解决方案:
DF %>%
select(!!c(1, 28:31))
cf:https://www.rdocumentation.org/packages/dplyr/versions/0.7.6/topics/select
您也可以与dplyr version 0.8
DF %>%
select(1, 28:31)