【发布时间】:2021-02-03 18:29:04
【问题描述】:
我运行的代码过滤分组的行,因此每个组只剩下 1 行,除非多行通过我的所有过滤器。这段代码昨天已经运行良好。然而,今天我下载了一些新包(用于分析基因富集),由于使用这些包,我的过滤代码现在给了我一个新错误:
SD1<- df %>%
group_by(group) %>%
filter(if(n() > 1) {(Score > SD) } else TRUE) %>%
slice_max(count1, n = 1) %>%
slice_max(count2, n = 1)
PPI <- df %>%
group_by(group) %>%
dplyr::filter(if(n() > 1) {(Score < SD) } else TRUE) %>%
dplyr::filter(dplyr::between(Score, Average, SD)) %>%
slice_max(count1, n = 1) %>%
slice_max(count2, n = 1) %>%
subset(!(group %in% SD1$group)) %>%
ungroup()
Error: Problem with `filter()` input `..1`.
x `left` must be length 1
i Input `..1` is `dplyr::between(Score, Average, SD)`.
i The error occurred in group 1: group = 1.
我见过类似的问题,但尝试应用他们的答案在我的用例中没有奏效。
出现这种情况是否存在编码原因,或者是 dplyr 与我在 RStudio 中安装的新冲突包存在问题?据我所知,这是我做的唯一不同的事情。
它过滤的数据如下:
group gene Score Average SD count1 count2
1 gene1 0.1 0.43 0.75 0 1
1 gene2 0.5 0.43 0.75 0 23
1 gene3 0.7 0.43 0.75 1 45
2 gene4 0.88 0.7 0.75
会话信息:
sessionInfo()
R version 4.0.2 (2020-06-22)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18363)
Matrix products: default
locale:
[1] LC_COLLATE=English_United Kingdom.1252 LC_CTYPE=English_United Kingdom.1252
[3] LC_MONETARY=English_United Kingdom.1252 LC_NUMERIC=C
[5] LC_TIME=English_United Kingdom.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] forcats_0.5.1 stringr_1.4.0 purrr_0.3.4 readr_1.4.0 tibble_3.0.6
[6] ggplot2_3.3.3 tidyverse_1.3.0 tidyr_1.1.2 dplyr_1.0.3 data.table_1.13.6
loaded via a namespace (and not attached):
[1] Rcpp_1.0.6 pillar_1.4.7 compiler_4.0.2 cellranger_1.1.0 dbplyr_2.0.0
[6] tools_4.0.2 jsonlite_1.7.2 lubridate_1.7.9.2 lifecycle_0.2.0 gtable_0.3.0
[11] pkgconfig_2.0.3 rlang_0.4.10 reprex_1.0.0 cli_2.3.0 rstudioapi_0.13
[16] DBI_1.1.1 haven_2.3.1 withr_2.4.1 xml2_1.3.2 httr_1.4.2
[21] fs_1.5.0 generics_0.1.0 vctrs_0.3.6 hms_1.0.0 grid_4.0.2
[26] tidyselect_1.1.0 glue_1.4.2 R6_2.5.0 readxl_1.3.1 modelr_0.1.8
[31] magrittr_2.0.1 backports_1.2.1 scales_1.1.1 ellipsis_0.3.1 rvest_0.3.6
[36] assertthat_0.2.1 colorspace_2.0-0 stringi_1.5.3 munsell_0.5.0 broom_0.7.4
[41] crayon_1.4.0
【问题讨论】:
-
从示例中,
UpperSD_Genes得到 0 行 -
对不起,我会更新这个例子——我是当场编的,我会放一个真实的。我认为从例子中gene3应该被我的过滤规则选择了。除此之外,您没有遇到与我相同的错误,这是否意味着我的错误是 dpylr 的问题,而不是运行的代码?
-
错误出现在最后一步,因为您的数据中没有行