这是我的数据,
> head(annotation)
seqname feature start end
1 1 transcript 11869 14409
2 1 exon 11869 12227
3 1 exon 12613 12721
4 1 exon 13221 14409
5 1 transcript 11872 14412
6 1 exon 11872 12227
我想要使用功能transcript
提取数据,因此我使用了
> annotation <- annotation[annotation$feature=='transcript']
Error in [.data.frame(annotation, annotation$feature == "transcript") :
undefined columns selected
我昨天下午刚刚使用了这个命令,它运行正常。 我不知道为什么它现在给我一个错误。
> annotation$feature=='transcript'
[1] TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
[13] FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE
[25] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE
[37] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE
[49] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
[61] FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE FALSE FALSE
请帮助,谢谢。
答案 0 :(得分:0)
错误表示您正在尝试选择不存在的列。在对data.frame
进行子集化时,如果您不使用多索引方法(例如,mtcars[1,2]
),而只使用单个数字(mtcars[1]
),它将data.frame视为它真正的list
。因此,它为您提供了data.frame的单列。
例如,mtcars
有11列。如果使用logical
s的向量进行索引,它将根据向量返回或不返回每列。基于此,逻辑的向量中应该不超过ncol(mtcars)
个值:
head(mtcars[rep(TRUE,11)])
# mpg cyl disp hp drat wt qsec vs am gear carb
# Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
# Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
# Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
# Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
# Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
# Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
mtcars[rep(TRUE,12)]
# Error in `[.data.frame`(mtcars, rep(TRUE, 12)) :
# undefined columns selected
由于您忘记了逗号,因此您的代码annotation$feature == "transcript"
将返回(至少)72 logical
秒,这超过了您的data.frame中的列数。
尝试
annotation[annotation$feature=='transcript',]