2017-07-10 32 views
-1

我有以下形式的數據幀中提取另一個值如何使用從列中的值從另一個R列

> geneRows[1:3,] 
     Probe/gene  logFC  CI.L  CI.R AveExpr   t P.Value adj.P.Val 
17656 220307_at -0.09017596 -0.4395575 0.25920561 6.104288 -0.5992736 0.5662047   1 
37517 220307_at 0.08704844 -0.2613434 0.43544028 6.104288 0.5801327 0.5784053   1 
57376 220307_at -0.03501474 -0.1267764 0.05674688 6.152467 -0.7816350 0.4409881   1 
       B gene  GSE    Group1     Group2 shape color 
17656 -5.639256 CD244 GSE2461    Male     Female x-open black 
37517 -5.978691 CD244 GSE2461 ulcerative colitis irritable bowel syndrome x-open black 
57376 -5.141940 CD244 GSE27887 nonlesional skin   lesional skin x-open black 

我想子集,這樣我可以在CI.R列中獲取當CI.L列是一定的值。舉例來說,我已經試過

geneRows$CI.R[geneRows$CI.L == -0.4395575]

,但我回來numeric(0),這意味着一個空向量。然而,當我嘗試在一個樣本數據集,像

mtcars$mpg[mtcars$carb==8]

它工作得很好。它們是相同的數據類型和一切,所以這裏有什麼問題?

背景

我創建行被添加到一個plotly情節。

line <- list(
     type = "line", 
     line = list(color = "grey"), 
     width = 0.2, 
     xref = "x", 
     yref = "y" 
    ) 

    lines <- list() 
    for (i in geneRows$CI.L) { 
     line[["x0"]] <- i 
     line[["x1"]] <- #here 

     lines <- c(lines, list(line)) 
    } 

他們需要從CI.L吸引到CI.R每行。我試圖通過起始點從表中獲取終點x1

+0

你能檢查每列的類嗎?它是數字嗎? – cderv

+0

是'CI.L'和'CI.R'都是數字 –

+0

嘗試'dplyr :: filter':'filter(geneRows,CI.L == -0.4395575)' – Mako212

回答

0

您的號碼可能比打印時的精度更高。例如:

> -0.4395575 == -0.4395575 
[1] TRUE 
> -0.4395575 == -0.4395575001 
[1] FALSE 

你也可以使用all.equal它默認爲1.5E-8的公差,但可以調整。

> all.equal(-0.4395575, -0.4395575001) 
[1] TRUE 
> all.equal(-0.4395575, -0.4395575001, tolerance = 1e-10) 
[1] "Mean relative difference: 2.275015e-10" 
相關問題