我有兩個數據框,一個用於SNP,一個用於基因。如何查找符合條件並返回R中匹配行的所有行?
對於每個基因,如果SNP位置在窗口大小內,我想將該行返回到數據框。然後,我想找出該特定SNP與該基因在該窗口中的相關性。我目前使用R.
基因數據幀:
Chr Start End sample1 sample2 sample3
10 100015109 100015443 2 1 1
10 100365832 100368960 1 0 2
10 100486970 100487277 2 1 0
個SNP數據幀:
SNP CHROM POSITION sample1 sample2 sample3
rs3766180 1 1478153 1 1 2
rs7540231 1 1506035 2 2 0
rs2272908 1 1721479 1 1 2
rs10907187 1 1759054 0 1 2
我有這樣的代碼,到目前爲止,但我不知道如果我做出正確的迭代。我想遍歷這些基因,並檢查哪些snps位於窗口大小內,並找到該snp和該基因之間的r平方。例如,如果snp1的位置位於基因的起始和結束範圍內,則選擇該行,然後在這兩行之間找到r平方。我認爲我的循環是錯誤的,可能有一個更簡單的方法。請幫忙。
snps <- as.matrix(read.table("snps.txt", header=T, sep="\t"))
genes <- as.matrix(read.table("genes.txt", header=T, sep="\t"))
#Set upper and lower bounds
size = 1000000
window_left = genes$cnvStart - size
window_right = genes$cnvEnd + size
snp_pos <- snps$POS
snp <- snps$ID
for (s in 1:nrow(snps)){
for(g in 1:nrow(genes)){
if (snp_pos >window_left & snp_pos < window_right){
corr.matrix2 <- (cor(t(s),t(g),use="pairwise.complete.obs", method="pearson"))
new_snps <- cbind(snp, snps[,-3])
}
}
}
我希望的輸出是每個選定的snp基因比較的r平方值表。 任何想法將不勝感激。
感謝, 內華達州
一個偏估計,以幫助,與所希望的輸出的最小可重放例子將有助於我理解問題。 – user2673238
好的,謝謝。我編輯了這篇文章。我希望澄清我遇到的麻煩。請讓我知道如果它仍然不清楚。 – Nev
你對「r-squared」有什麼期望?你認爲這意味着什麼?我建議你看[wikipedia](https://en.wikipedia.org/wiki/Coefficient_of_determination)。你的數據有多大? – Llopis