ある行で値を取得したときに、データフレーム内の特定の行を選択したいと思います。これらの選択された行 (および最初に選択された行) は新しいデータフレームを構成する必要があり、データフレーム名$Name
は最初に選択された行で = である必要があります。
ロジック:
$FC
1 - 最初に選択された行は=> 0.7 でなければなりません。
2 - データフレームを形成するために選択された行は$chr
、最初に選択された行に = する必要があります。
3 - 選択された行は$Position
5000 ウィンドウ内にある必要があります ($Position
最初に選択された行と比較して)。
*3a) この例では、行= BD22はウィンドウ番号 (5000 ウィンドウから 3000までは= 500 から= 5500 まで変化する)を超えているため、データフレーム$Name
に含めることはできません。BD13
$Position
$Position
$Position
上記の簡単な例に従います。
私の入力データinput
フレーム:
Name FC chr Position
BD10 0.1 chr1 1000
BD11 0.1 chr2 1000
BD12 0.2 chr3 2000
BD13 0.7 chr3 3000
BD14 0.4 chr3 4000
BD22 0.1 chr3 7000
BD23 0.2 chr4 1000
この例では、出力として名前行を持つデータフレームを期待しています = BD13
:
Name FC chr Position
BD12 0.2 chr3 2000
BD13 0.7 chr3 3000
BD14 0.4 chr3 4000
その後、次のように構成された各データフレームをプロットしたいと思います。
pdf(BD13.pdf)
plot(BD13$Name, BD13$FC, main="BD13",
xlab="Name", ylab="FC")
dev.off()
私が試してみました:
out <- subset(input, FC >= 0.7)
out$startw <- (out$Position - 2500)
out$endw <- (out$Position + 2500)
library(plyr)
lvl <- dlply(out, .(Name))
for (i in 1:length(lvl)) {
Neigh1 <- subset(input, input$Position >= lvl[i]$startw & lvl[i]$chr == input$chr)
Neigh2 <- subset(input, input$Position <= lvl[i]$endw & lvl[i]$chr == input$chr)
Neight <- rbind(Neigh1, Neigh2)
pdf(sprintf("%s.pdf", [i]))
boxplot(Neigh$Name, Neigh$FC, xlab=[i], ylab="FC", main="[i]")
dev.off()}
しかしNeigh1
、Neigh2
空です...ありがとう!