如何使用列中的值从另一列R中提取另一个值
我有一个表格的数据框如何使用列中的值从另一列R中提取另一个值,r,dataframe,subset,R,Dataframe,Subset,我有一个表格的数据框 > 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.26134
> 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.L
列为某个值时,我就可以得到CI.R
列。例如,我试过
granows$CI.R[granows$CI.L==-0.4395575]
但是我得到了数值(0)
,意思是一个空向量。然而,当我在一个样本数据集上尝试它时
mtcars$mpg[mtcars$carb==8]
它很好用。它们是相同的数据类型和所有东西,那么这里的问题是什么
背景
我正在创建要添加到plotly
plot的线
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))
}
line您的数字可能比打印的数字精度更高。例如:
> -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"
你能检查一下每列的类别吗?它是数字的吗?是的,CI.L
和CI.R
都是数字的dplyr::filter
:filter(granows,CI.L==-0.4395575)
用=
测试小数位数是个坏主意。例如:0.1+0.05==0.15
为FALSE。这真的是你在这种情况下需要的吗?@KyleWeise那么你应该后退一步,描述一下你真正想要解决的问题。您可以直接提取这两列;不需要从另一个向上看。似乎是一个例子