选择了未定义的列:重新启动Rstudio并运行我遇到此之前使用的相同代码

时间:2017-04-18 16:30:33

标签: r

这是我的数据,

> 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

请帮助,谢谢。

1 个答案:

答案 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',]