【发布时间】:2018-10-09 23:13:14
【问题描述】:
我有一个数据框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
没有像我预期的那样工作。
我很困惑,因为这似乎是许多地方(如this answer)提倡的用于子集数据框的方法。我做错了什么?
对可能的重复标志的响应:在这种情况下,似乎没有任何解决方案有效。
> trainSmall[, -which(names(trainSmall) %in% excl)]
[1] -1 -2 -3 -6
> trainSmall[ , !names(trainSmall) %in% excl]
[1] FALSE FALSE FALSE TRUE TRUE FALSE
【问题讨论】: