2017-09-26 213 views
-2

让我们假设我已经在R-Studio中加载一个名为exprCore1 data.fram,东风看起来是这样的:滤镜功能dplyr似乎不工作

measure qid value 
1 p5  1 0.2 
2 p100 1 0.8 
3 map  1 0.22 
4 p5  2 0.4 
5 p100 2 0.5 
6 map  2 0.32 

基本上都希望是每一列,其中测量方法是“地图”。

我尝试了不同的方法,他们都只是返回一个没有内容的0x4 tibble。

我试过到目前为止:

library("dplyr", lib.loc="~/R/win-library/3.4") 
exprCore1MapOverall <- dplyr::filter(exprCore1, measure == "map") 

这只是返回:

# A tibble: 0 x 4 
# ... with 4 variables: measure <chr>, queryID <chr>, value <dbl>, coreTag <chr> 

缺少什么我在这里?谁能帮我?

谢谢

编辑:

也试过

exprCore1MapOverall <-filter(exprCore1, measure %in%c("map")) 

EDIT2:

我不能张贴整个data.frame,办法多的数据。我缩水它使用

exprCore1Fixed <- exprCore1[-c(30: 142082),] 

这里是exprCore1Fixed

structure(list(measure = c("num_ret  ", "num_rel  ", 
"num_rel_ret ", "map   ", "R-prec   ", "bpref   ", 
"recip_rank  ", "ircl_prn.0.00 ", "ircl_prn.0.10 ", "ircl_prn.0.20 ", 
"ircl_prn.0.30 ", "ircl_prn.0.40 ", "ircl_prn.0.50 ", "ircl_prn.0.60 ", 
"ircl_prn.0.70 ", "ircl_prn.0.80 ", "ircl_prn.0.90 ", "ircl_prn.1.00 ", 
"P5    ", "P10   ", "P15   ", "P20   ", 
"P30   ", "P100   ", "P200   ", "P500   ", 
"P1000   ", "num_ret  ", "num_rel  ", "ircl_prn.0.70 ", 
"ircl_prn.0.80 ", "ircl_prn.0.90 ", "ircl_prn.1.00 ", "P5    ", 
"P10   ", "P15   ", "P20   ", "P30   ", 
"P100   ", "P200   ", "P500   ", "P1000   " 
), queryID = c("1", "1", "1", "1", "1", "1", "1", "1", "1", "1", 
"1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", 
"1", "1", "1", "1", "2", "2", "all", "all", "all", "all", "all", 
"all", "all", "all", "all", "all", "all", "all", "all"), value = c(752, 
5, 4, 0.1089, 0.2, 0.8, 0.25, 0.25, 0.25, 0.25, 0.1429, 0.1429, 
0.1429, 0.1429, 0.0342, 0.0342, 0, 0, 0.2, 0.1, 0.0667, 0.1, 
0.1, 0.03, 0.02, 0.008, 0.004, 2, 3, 0.0696, 0.0565, 0.0374, 
0.0345, 0.25, 0.1962, 0.1718, 0.151, 0.1192, 0.0525, 0.0335, 
0.0164, 0.0097), coreTag = c("Core_1", "Core_1", "Core_1", "Core_1", 
"Core_1", "Core_1", "Core_1", "Core_1", "Core_1", "Core_1", "Core_1", 
"Core_1", "Core_1", "Core_1", "Core_1", "Core_1", "Core_1", "Core_1", 
"Core_1", "Core_1", "Core_1", "Core_1", "Core_1", "Core_1", "Core_1", 
"Core_1", "Core_1", "Core_1", "Core_1", "Core_1", "Core_1", "Core_1", 
"Core_1", "Core_1", "Core_1", "Core_1", "Core_1", "Core_1", "Core_1", 
"Core_1", "Core_1", "Core_1")), .Names = c("measure", "queryID", 
"value", "coreTag"), row.names = c(NA, -42L), class = c("tbl_df", 
"tbl", "data.frame")) 
+2

我无法复制此问题。你的代码适合我。通过可疑的方式,您的“度量”列正在打印,您确定在值中没有尾部或前导空白吗?像'“地图”'?尝试'dplyr :: filter(exprCore1,修剪(测量)==“地图”)'看看你是否得到不同的结果。 – thelatemail

+1

这段代码对我来说看起来也很好。在控制台中运行'dput(exprCore1)'并将结果输出编辑到您的文章中,以便我们可以使用与您使用的完全相同的数据。 – dshkol

+0

与您的问题无关,但您确实需要从dplyr中导入'filter'命令,因为您已经调用'library(dplyr)'。在这种情况下,不需要'dplyr :: filter(...)'。 – dshkol

回答

1

的dput使用

dplyr::filter(exprCore1, trimws(measure) == "map") 

的伎俩,非常感谢你。

+0

在开始尝试任何分析之前,我会建议修剪列的空白作为数据设置过程的一部分,例如:'exprCore1 < - exprCore1%>%mutate(measure = trimws(measure))' – Marius

+0

谢谢,will记住这一点。 –