我的任務是生成一個用於計算Z分數然後將其輸出到文件的R代碼。雖然腳本有效,但我對某些令我感到困惑的線路有些疑問。 INPUT.TXT:改進我的R代碼來計算數據框的Z分數
GeneID GeneID-2 GeneName TSS-ID Locus-ID Sample1 Sample2 Sample3 Sample4 Sample5 ID1 X1 Zranb2 TSS1 Loc1 22.49161667 14.7231 19.62885833 26.16171667 39.3109 ID2 X2 Lphn2 TSS2 Loc2 6.439735 5.920786667 8.883331667 7.696353333 10.46969333 ID3 X3 Rpf1 TSS3 Loc3 30.67975 20.93751667 27.30251667 31.55653333 58.57418333 ID4 X4 Ctbs TSS4 Loc4 1.916071667 1.943611667 2.696701667 3.130295 2.74012 ID5 X5 Spata1 TSS5 Loc5 0.715265667 0.3318745 0.4183155 0.961065833 1.10731 ID6 X6 Sap30bp TSS6 Loc6 21.65946667 23.84386667 28.39683333 25.32866667 26.96016667 ID7 X7 Recql5 TSS7 Loc7 7.541321667 4.674345 4.40599 3.24996 3.327395 ID8 X8 Itgb4 TSS8 Loc8 37.3442 51.58868333 51.58868333 44.84458333 42.44406667
我想產生Z-分數起始於樣品1的列的端部的數據列。 這裏是我寫將R代碼:
df <- read.table("Input.txt", row.names=1, header=TRUE, sep="\t", na.strings="NA")
x<-df[,5:ncol(df)] #selects the columns after column 5, so just the data
p<-matrix(0, now(x), ncol(x)) #opens matrix. First issue: I used "0" as I saw other people on forums doing that, but i dont know its significance.It worked for me, so i kept it. Can anyone comment on this?
#Create a loop for row and columns
for (i in 1:nrow(x)) {
for (j in 1:ncol(x)) {
p[i,j] <- (x[i,j]-rowMeans(x[i,]))/sd(x[i,])
}
}
上述腳本成功地生成所述矩陣。有沒有辦法優化它或者這是一個合理的方法?我的巨大數據集有點慢,但它完成了工作。
輸出文件時,我正在移動我的標題。我的目標是將第一列df輸出爲rownames,然後將每個樣本名稱作爲標題。爲此,我使用:
rownames(p) <-rownames(df)
colnames(p) <- colnames(df[,5:ncol(df)])
write.table(p, file = "Zscore.txt", append = FALSE, quote = FALSE, sep = "\t", row.names = TRUE, col.names = TRUE)
輸出文件看起來像:
Sample1 Sample2 Sample3 Sample4 Sample5 ID1 -0.212153637 -1.048074183 -0.520196808 0.182762424 1.597662204 ID2 -0.780453984 -1.061276795 0.541869723 -0.100449696 1.400310753 ID3 -0.216506298 -0.890314297 -0.450087937 -0.1558648 1.712773332 ID4 -1.064932662 -1.013415279 0.395343854 1.206440228 0.476563859 ID5 0.02537058 -1.119050742 -0.861024653 0.759083238 1.195621576 ID6 -1.35974252 -0.52968526 1.200411349 0.03452872 0.654487711
標題被移位到左側。另外,如果我想在輸出文件中包含df的所有前5列,那怎麼做?
最後,您能否就上述Zscore方法計算的差異和其他問題中討論的尺度函數之間建議一下?
R中的很多東西都是矢量化的,包括基本的東西,如減法和除法。 – Heroka
那麼?這與此有何關係?感謝您的闡述。 – BioProgram
我錯過了。現在我做了。謝謝@akrun – BioProgram