2015-01-09 1 views
0

두 벡터 사이의 인덱스를 대응 찾기 : 으로 I는 10 * 10 p- 값 행렬을 R

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)) 

그럼 I 그들을 조정 된

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 vs. pvalue plot

문제는 어떻게 FDRpvalue 벡터의 두 벡터의 점의 x 및 y의 인덱스 (예를 들어 선회 점)을 달성 할 수 있다는 것이다. 감사.

+4

글쎄, 당신은 텍스트로 값을 플롯하는 경우, @CMichael의 답처럼,'(x == lookupvalue)'; 또는 플롯하기 전에 데이터를 주문하고 계산할 수 있습니다! 여기에서 마지막 요소를 동그라미로 만들었으므로 X- 인덱스는'length (x) -2'입니다. –

+0

감사합니다 Carl, 좋은 해결책. – user3789396

+0

내 답변에 대한 귀하의 의견에 대해 - 그래픽 워크 플로 (매우 거대한 데이터 세트를 언급 함)에 관심이 있습니까? 아니면 가장 낮은 가치를 확실하게 파악하고 싶습니까? – CMichael

답변

4

당신은 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 기능을 중지하십시오.

콘솔로 돌아가서, 당신은 빨간 동그라미 지점에 대한 FDR[rk_elt]

(-log(as.numeric(pvalue), 2))[rk_elt]yx를 얻을 수 있습니다, 그것은 제공 :

> (-log(as.numeric(pvalue), 2))[rk_elt] 
[1] 3.375973 
> FDR[rk_elt] 
[1] 0.1398239 
+1

'locator'는 데이터 집합의 실제'x'와'y' 값을주지 않을 것이기 때문에 이것을 추가 할 것입니다. 아마도 가장 가까운 것을 찾고 싶을 것입니다. –

+0

감사합니다 Cath, 매우 흥미 롭습니다.하지만 Carl은 특히 점들이 겹치는 매우 바쁜 구획에서 실제 값을 언급하지 않았습니다. – user3789396

+1

@ CarlWitthoft, 네 말이 맞아. 실제 좌표를 갖기 위해'locator' 대신에'identify'를 가진 버전을 추가했습니다. 물론 이것은 중복 된 도트의 문제를 실제로 해결하지는 못하지만이를 해결하기 위해 벡터에서 직접 작업하는 것이 좋습니다. – Cath

1

다음과 같은 것이 있습니까?

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 

enter image description here

편집이 :

min.FDRs <- dataTemp[dataTemp$FDR == min(dataTemp$FDR),] 
:에 귀하의 질문에 대해이 매우 간단합니다 "나는 예를 최소에 해당하는 모든 pvalues을 찾기 위해에 스크립트 방법이 필요합니다 (FDR)의 값"

최소 FDR과 동일한 점만 포함하는 필터링 된 data.frame min.FDR을 생성합니다. 당신이 당신의 데이터를 플롯 한 후 입력

:

+0

나는 그것이 의심 스럽다. 그는 가치가 아니라 지수를 요구했다. –

+0

@CMichael, 이것은 흥미로운 대답이지만, 내 실제 음모는 매우 커서 시각적으로 해당 숫자를 확인하는 것은 불가능합니다. 그런 다음 예를 들어 min (FDR) 값에 해당하는 모든 pvalues를 찾는 스크립트 방법이 필요합니다. 이걸 도와 드릴까요? – user3789396

+0

아, 지표면을 간과하고 좌표계에서 생각했습니다. ID로 레이블을 붙인 다음 ID에 대한 조회를 사용할 수도 있지만 @ CathG의 솔루션은보다 우아하고 사용자에게 친숙합니다. – CMichael