cbind
ファイルのリストで使用したいと思います。ただし、各ファイルは特定の染色体 (chr)(k in 1:29)
と特定のサンプルに分割されています(i in 1:777)
。ファイルは次のようなものです:
sample1chr1.txt、sample1chr2.txt ... sample1chr29.txt、sample2chr1.txt ... sample777chr29.txt
すべてのファイルの行名はまったく同じです (最初の 3 列は行名を表します)。すべてのサンプル ファイルにマージする各 chr の最終ファイルを取得したいと思います。最終ファイルで行名を繰り返しません (最初の 3 列は行名を表します)。
私はこれを試しました:
#Creating file with row names (3 first columns) to each Chr
{
{for(k in 1:29){
infile <- paste0("sample1chr",k,".txt")
outfile <- paste0("LRRrawallchr",k,".txt")
rows <- read.table(infile, header=TRUE, sep="\t")
rows <- rows[, -grep("Log.R.Ratio", colnames(rows))]
write.table(rows, outfile, sep=";")}}
#Cbind in one file per Chr
{ for(i in 1:777)
for(k in 1:29){
base <- paste0("LRRrawallchr",k,".txt")
chr <- read.table(base, header=TRUE, sep=";")
infile <- paste0("sample",i,"chr",k,".txt")
chr2 <- read.table(infile, header=TRUE, sep="\t")
outfile <- paste0("LRRrawallchr",k,".txt")
chr2 <- chr2[, -grep("Name", colnames(chr2))]
chr2 <- chr2[, -grep("Chr", colnames(chr2))]
chr2 <- chr2[, -grep("Position", colnames(chr2))]
chr <- cbind(chr, chr2)
write.table(chr, outfile, sep=";", row.names=FALSE, col.names=FALSE)}
}
入力例 (sample1chr1.txt):
Name Chr Position sample1value
BAC-11034 1 128 0.302
BAC-11044 1 129 -0.56
BAC-11057 1 134 0.0840
入力例 (sample2chr1.txt):
Name Chr Position sample2value
BAC-11034 1 128 0.25
BAC-11044 1 129 0.41
BAC-11057 1 134 -0.14
期待される出力 (LRRrawallchr1):
Name Chr Position sample1value sample2value
BAC-11034 1 128 0.302 0.25
BAC-11044 1 129 -0.56 0.41
BAC-11057 1 134 0.0840 -0.14
22553 個の異なる .txt ファイルがあります (777 個のサンプルごとに 29 個のファイル (chr ごとに 1 個))。22553 個のファイル (sample1chr1.txt、sample1chr2.txt ... sample1chr29.txt、sample2chr1.txt ... sample777chr29.txt) はすべて上記の例のようになります。
(LRRrawallchr1) のような 29 個のファイルが必要で、Chr ごとに 1 つです。「LRRrawallchr,k」ファイルは 777+3 (800 列) である必要があります。サンプルごとに 3 つの行名と 1 つの列。
乾杯!