我正在尝试生成伪数据以执行某些分析。我想洗牌 前6列,然后将它们与第7列一起连接。
一个小样本文件可以正常使用脚本,并为我提供所需的输出
但是当我放置一个包含1000行和8644482列的文件时,命令永远不会完成 用这个脚本。
我在这个论坛上看到我可以使用的bigdata
# install.packages("data.table")
library(data.table)
fread("bigDataFile.txt")
它给出了这个错误
possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace
Selection: 2
输入文件:
B01 1 0 0 1 -9 C C G G A G
B04 4 0 0 1 -9 C C G G A G
B40 40 0 0 1 -9 T C G G A G
B50 50 0 0 1 -9 T C G G A G
B73 73 0 0 1 -9 C C G G A A
B78 78 0 0 2 -9 C C G G A G
B86 86 0 0 2 -9 T C A A A G
B92 92 0 0 1 -9 T C A G 0 0
B93 93 0 0 2 -9 C C A G A G
B94 94 0 0 2 -9 T C G G G G
输出
B40 40 0 0 1 -9 C C G G A G
B93 93 0 0 2 -9 C C G G A G
B01 1 0 0 1 -9 T C G G A G
B92 92 0 0 1 -9 T C G G A G
B04 4 0 0 1 -9 C C G G A A
B86 86 0 0 2 -9 C C G G A G
B73 73 0 0 1 -9 T C A A A G
B78 78 0 0 2 -9 T C A G 0 0
B94 94 0 0 2 -9 C C A G A G
B50 50 0 0 1 -9 T C G G G G
使用的命令:
x <- read.table("genotypeSample.txt",sep="")
> y <- c(x[sample(1:nrow(x)),1:6], x[,7:12])
> write.table(y,"shufx.txt",row.names=FALSE,col.names=FALSE, quote=F)
除了大文件问题,如果我想用这个脚本创建100个不同的文件,如何在循环中使用这个脚本。
我也试过Linux命令来实现这一点。 在Linux中Shuf -generate random permutations
cut -d" " -f1-6 genotypeSample.txt |shuf > a.txt
paste -d" " a.txt <(cut -d" " -f7- genotypeSample.txt)
for循环测试正常,但我如何使用shuf生成100个随机排列
for i in {1..100};do cut -d" " -f1-6 genotypeSample.txt |shuf > a${i}.txt ;done
for i in {1..100}; do paste -d" " a${i}.txt <(cut -d" " -f7- genotypeSample.txt) > a$i.dat ; done
我该如何解决?
答案 0 :(得分:0)
你可以做一次切割;也消除中间文件,应该加快一些。
cut -d' ' -f1-6 genotypeSample.txt > a
cut -d' ' -f7- genotypeSample.txt > b
for i in {1..100};
do
paste -d' ' <(shuf a) b > a$i.dat;
done
ps。未经测试!