2017-09-26 204 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記住這一點。 –