在 R 中找到两个向量之间的对应索引
Find corresponding indices between two vectors in R
我有一个 10*10 p-value 矩阵:
pvalue<- structure(c(NA, -0.096323162317276, 0.122216485440731, 0.096323162317276,
0.225789770483971, 0.161574333906174, -0.0300362538546324, -0.096323162317276,
0.161574333906174, -0.160538598895073, NA, NA, -0.127395153045654,
-0.167788729071617, 0.253754556179047, -0.108751960098743, -0.428793430328369,
0.167788729071617, -0.108751960098743, -0.393578499555588, NA,
NA, NA, -0.0911444947123528, -0.214396715164185, -0.15432420372963,
0.0248575899749994, 0.0911444947123528, -0.15432420372963, 0.151217013597488,
NA, NA, NA, NA, 0.25789749622345, -0.15432420372963, -0.497151792049408,
0.211289510130882, -0.15432420372963, -0.424650490283966, NA,
NA, NA, NA, NA, -0.15432420372963, 0.0248575899749994, 0.0911444947123528,
-0.15432420372963, 0.151217013597488, NA, NA, NA, NA, NA, NA,
0.0300362538546324, 0.096323162317276, -0.161574333906174, 0.160538598895073,
NA, NA, NA, NA, NA, NA, NA, 0.304505467414856, -0.262040436267853,
-0.397721439599991, NA, NA, NA, NA, NA, NA, NA, NA, 0.349041998386383,
0.319005727767944, NA, NA, NA, NA, NA, NA, NA, NA, NA, -0.160538598895073,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), .Dim = c(10L, 10L))
然后我调整了它们:
FDR<- p.adjust(as.numeric(pvalue), method="BH", n=45)
qplot(-log(as.numeric(pvalue), 2), FDR, ylim=c(-0.1, 0.5))
产生了以下情节。每个 FDR 值都有对应的 pvalue。
问题是如何在 FDR
和 pvalue
向量的两个向量中实现点(例如带圆圈的点)的 x 和 y 索引。谢谢。
你的意思是这样的吗?
dataTemp <- data.frame(FDR)
dataTemp$x <- -log(as.numeric(pvalue), 2)
require(ggplot2)
g <- ggplot(dataTemp,aes(x=x,y=FDR))
g <- g + geom_point()
g <- g + geom_text(aes(x=x,y=FDR,label=paste(round(x,2),round(FDR,2))),size=4)
g <- g + ylim(-0.1,0.5)
g
编辑:关于 "I need a script way to for example find all pvalues that correspond to min(FDR) values" 的问题非常简单:
min.FDRs <- dataTemp[dataTemp$FDR == min(dataTemp$FDR),]
这会产生过滤后的 data.frame min.FDRs,其中仅包含等于最小 FDR 的点。
您可以使用locator
函数:
绘制数据后,输入:
locator(1) # to know the coordinates of only one point, locator(k) for k points
然后用鼠标点击该点,就可以在R控制台看到坐标了。
对于你的红色圆圈点,它给出:
> locator(1)
$x
[1] 3.460083
$y
[1] 0.1408836
当然也可以在变量中赋值:
mypoint<-locator(1)
更新:
要获取实际坐标,可以使用identify
函数:
rk_elt<-identify(-log(as.numeric(pvalue), 2),FDR,1:length(FDR),plot=F)
然后点击该点,停止identify
功能。
返回控制台,您将获得 x
和 (-log(as.numeric(pvalue), 2))[rk_elt]
以及 y
和 FDR[rk_elt]
对于红圈点,给出:
> (-log(as.numeric(pvalue), 2))[rk_elt]
[1] 3.375973
> FDR[rk_elt]
[1] 0.1398239
我有一个 10*10 p-value 矩阵:
pvalue<- structure(c(NA, -0.096323162317276, 0.122216485440731, 0.096323162317276,
0.225789770483971, 0.161574333906174, -0.0300362538546324, -0.096323162317276,
0.161574333906174, -0.160538598895073, NA, NA, -0.127395153045654,
-0.167788729071617, 0.253754556179047, -0.108751960098743, -0.428793430328369,
0.167788729071617, -0.108751960098743, -0.393578499555588, NA,
NA, NA, -0.0911444947123528, -0.214396715164185, -0.15432420372963,
0.0248575899749994, 0.0911444947123528, -0.15432420372963, 0.151217013597488,
NA, NA, NA, NA, 0.25789749622345, -0.15432420372963, -0.497151792049408,
0.211289510130882, -0.15432420372963, -0.424650490283966, NA,
NA, NA, NA, NA, -0.15432420372963, 0.0248575899749994, 0.0911444947123528,
-0.15432420372963, 0.151217013597488, NA, NA, NA, NA, NA, NA,
0.0300362538546324, 0.096323162317276, -0.161574333906174, 0.160538598895073,
NA, NA, NA, NA, NA, NA, NA, 0.304505467414856, -0.262040436267853,
-0.397721439599991, NA, NA, NA, NA, NA, NA, NA, NA, 0.349041998386383,
0.319005727767944, NA, NA, NA, NA, NA, NA, NA, NA, NA, -0.160538598895073,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), .Dim = c(10L, 10L))
然后我调整了它们:
FDR<- p.adjust(as.numeric(pvalue), method="BH", n=45)
qplot(-log(as.numeric(pvalue), 2), FDR, ylim=c(-0.1, 0.5))
产生了以下情节。每个 FDR 值都有对应的 pvalue。
问题是如何在 FDR
和 pvalue
向量的两个向量中实现点(例如带圆圈的点)的 x 和 y 索引。谢谢。
你的意思是这样的吗?
dataTemp <- data.frame(FDR)
dataTemp$x <- -log(as.numeric(pvalue), 2)
require(ggplot2)
g <- ggplot(dataTemp,aes(x=x,y=FDR))
g <- g + geom_point()
g <- g + geom_text(aes(x=x,y=FDR,label=paste(round(x,2),round(FDR,2))),size=4)
g <- g + ylim(-0.1,0.5)
g
编辑:关于 "I need a script way to for example find all pvalues that correspond to min(FDR) values" 的问题非常简单:
min.FDRs <- dataTemp[dataTemp$FDR == min(dataTemp$FDR),]
这会产生过滤后的 data.frame min.FDRs,其中仅包含等于最小 FDR 的点。
您可以使用locator
函数:
绘制数据后,输入:
locator(1) # to know the coordinates of only one point, locator(k) for k points
然后用鼠标点击该点,就可以在R控制台看到坐标了。
对于你的红色圆圈点,它给出:
> locator(1)
$x
[1] 3.460083
$y
[1] 0.1408836
当然也可以在变量中赋值:
mypoint<-locator(1)
更新:
要获取实际坐标,可以使用identify
函数:
rk_elt<-identify(-log(as.numeric(pvalue), 2),FDR,1:length(FDR),plot=F)
然后点击该点,停止identify
功能。
返回控制台,您将获得 x
和 (-log(as.numeric(pvalue), 2))[rk_elt]
以及 y
和 FDR[rk_elt]
对于红圈点,给出:
> (-log(as.numeric(pvalue), 2))[rk_elt]
[1] 3.375973
> FDR[rk_elt]
[1] 0.1398239