0

任何人都知道为什么会这样?我有一个数据框,我正在尝试用 dplyr 过滤它。

filter(dft, form=="9S")
Error in structure(as.character(x), names = names(x), dim = dim(x), dimnames = dimnames(x)) : 
  'names' attribute [1020] must be the same length as the vector [113]

这是我要考虑的事物的类别:

class(dft$form)
[1] "factor"

所以......不确定问题是什么...... dplyr 应该是预期因素,我已经在网上看到很多使用filter带字符串的 dplyr 来做这件事的人的例子。

这里是头dft

   lab type form class     ami dateStarted GE-000 ANSI-000 ANSI-001 ANSI-002 ANSI-003 ANSI-004 ANSI-005 ANSI-006 ANSI-007 ANSI-008 ANSI-009
V3 2078 KV2c  16S   200 Flexnet   9/21/2010   <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>
V4 2078 KV2c  16S   200 Flexnet   9/21/2010   <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>
V5 2078 KV2c  12S   200 Flexnet   9/21/2010   <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>
V6 2078 KV2c   9S    20 Flexnet   9/21/2010   <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>
V7 2078 KV2c  36S    20 Flexnet   9/21/2010   <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>
V8 2078 KV2c  45S    20 Flexnet   9/21/2010   <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>
   ANSI-010 ANSI-011 ANSI-013 ANSI-014 ANSI-015 ANSI-016 ANSI-017 ANSI-018 ANSI-019 ANSI-020 ANSI-021 ANSI-022 ANSI-023 ANSI-024 ANSI-025
V3     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>
V4     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>
V5     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>
V6     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>
V7     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>
V8     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>
   ANSI-025a ANSI-026 ANSI-027 ANSI-028 ANSI-030 ANSI-031 ANSI-032 ANSI-033 ANSI-003a ANSI-034 ANSI-035 ANSI-038 GE-056 GE-070 GE-071 GE-076
V3      <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>      <NA>     <NA>     <NA>     <NA>      1   <NA>   <NA>      0
V4      <NA>        1     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>      <NA>     <NA>     <NA>     <NA>      1   <NA>   <NA>      0
V5      <NA>        1     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>      <NA>     <NA>     <NA>     <NA>      1   <NA>   <NA>      0
V6      <NA>        1     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>      <NA>     <NA>     <NA>     <NA>      1   <NA>   <NA>      0
V7      <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>      <NA>     <NA>     <NA>     <NA>      1   <NA>   <NA>      0
V8      <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>      <NA>     <NA>     <NA>     <NA>      1   <NA>   <NA>      0
   GE-099 GE-102 GE-103 GE-105 GE-108 GE-119 GE-164
V3      1      1   <NA>   <NA>   <NA>   <NA>   <NA>
V4      1      1   <NA>   <NA>   <NA>   <NA>   <NA>
V5      1      1   <NA>   <NA>   <NA>   <NA>   <NA>
V6      1      1   <NA>   <NA>   <NA>   <NA>   <NA>
V7      1      1   <NA>   <NA>   <NA>   <NA>   <NA>
V8      1      1   <NA>   <NA>   <NA>   <NA>   <NA>
4

1 回答 1

3

你确定它使用的是 dplyr 的过滤器吗?尝试dplyr::filter强制它使用该dplyr版本。

在这里,我读入了您的一些数据并尝试了相同的命令,它按预期工作:

dft <- read.table(text="   lab type form class     ami dateStarted GE-000 ANSI-000 ANSI-001 ANSI-002 ANSI-003 ANSI-004 ANSI-005 ANSI-006 ANSI-007 ANSI-008 ANSI-009
V3 2078 KV2c  16S   200 Flexnet   9/21/2010   <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>
V4 2078 KV2c  16S   200 Flexnet   9/21/2010   <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>
V5 2078 KV2c  12S   200 Flexnet   9/21/2010   <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>
V6 2078 KV2c   9S    20 Flexnet   9/21/2010   <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>
V7 2078 KV2c  36S    20 Flexnet   9/21/2010   <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>
V8 2078 KV2c  45S    20 Flexnet   9/21/2010   <NA>     <NA>     <NA>     <NA>     <NA>  <NA>     <NA>     <NA>     <NA>     <NA>     <NA>", header=TRUE)

library(dplyr)
filter(dft, form=="9S")

## > filter(dft, form=="9S")
##    lab type form class     ami dateStarted GE.000 ANSI.000 ANSI.001 ANSI.002
## 1 2078 KV2c   9S    20 Flexnet   9/21/2010   <NA>     <NA>     <NA>     <NA>
##   ANSI.003 ANSI.004 ANSI.005 ANSI.006 ANSI.007 ANSI.008 ANSI.009
## 1     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>     <NA>

如果这不起作用尝试在一个干净的会话中重新启动 R,也许你已经覆盖了你不应该覆盖的东西。

于 2014-03-14T13:59:45.070 回答