У меня есть фрейм данных, trainSmall
, с шестью столбцами.
> trainSmall
chr pos end LCR gc.50 type
1: 22 39491638 39491639 0 0 del_L
2: 22 29434028 29434029 0 0 ins
3: 22 28347247 28347248 0 0 del_R
4: 22 40121931 40121932 0 0 ins
5: 22 39122351 39122352 0 0 del_L
---
768: 22 27869380 27869381 0 0 del_R
769: 22 28823159 28823160 0 0 ins
770: 22 24319557 24319558 0 0 del_R
771: 22 38570330 38570331 0 0 del_L
772: 22 48182139 48182140 0 0 del_L
> is.data.frame(trainSmall)
[1] TRUE
У меня также есть вектор, excl
, с четырьмя предметами.
> excl
[1] "chr" "pos" "end" "type"
Я хотел бы взять все строки trainSmall
, но только столбцы , а не в excl
. Поэтому я попытался
> trainSmall[, !colnames(trainSmall) %in% excl]
[1] FALSE FALSE FALSE TRUE TRUE FALSE
Но это просто дает мне другой логический вектор, а не фактические строки из фрейма данных.
Даже делаю
> trainSmall[, c(F,F,F,T,T,F)]
[1] FALSE FALSE FALSE TRUE TRUE FALSE
не работает, как я ожидал.
Я довольно сбит с толку, потому что, похоже, во многих местах этот метод используется (например, этот ответ ) для поднабора фрейма данных. Что я делаю не так?
Ответ на возможный повторяющийся флаг : Ни одно из решений там не работает в этом случае.
> trainSmall[, -which(names(trainSmall) %in% excl)]
[1] -1 -2 -3 -6
> trainSmall[ , !names(trainSmall) %in% excl]
[1] FALSE FALSE FALSE TRUE TRUE FALSE