我需要将一个矩阵从R导出到一个* .txt文件,该文件已经用matsplitter函数分割而不会丢失所创建的格式,即我需要将数据放在三行和五列的子集中。
matspliltter功能:
matsplitter<-function(M, r, c) {
rg <- (row(M)-1)%/%r+1
cg <- (col(M)-1)%/%c+1
rci <- (rg-1)*max(cg) + cg
N <- prod(dim(M))/r/c
cv <- unlist(lapply(1:N, function(x) M[rci==x]))
dim(cv)<-c(r,c,N)
cv}
示例矩阵,拆分和输出
B <- matrix(c(1:1380),ncol=5)
matsplitter(B,3,5)
write.table(B,file="outfile.txt",sep="\t", col.names = F, row.names = F)
write.table将松散拆分并创建一个只有三行的文件。如何在* .txt文件中保留matsplitter产生的输出外观?
以及完成后结果应该是什么样子的示例(“,1”等需要替换为字符串:
“tstep”0“item”1“layer”0
所以最终输出看起来像这样:
"tstep" 0 "item" 1 "layer" 0
1 277 553 829 1105
2 278 554 830 1106
3 279 555 831 1107
"tstep" 1 "item" 1 "layer" 0
4 280 556 832 1108
5 281 557 833 1109
6 282 558 834 1110
"tstep" 2 "item" 1 "layer" 0
7 283 559 835 1111
8 284 560 836 1112
9 285 561 837 1113
等。随着“tstep”随着每组新数据的增加而增加。
答案 0 :(得分:1)
如果我理解你的正确目标是:
例如:
test <- matsplitter(B,3,5)
apply(test, 3, function(x){
write.table(as.data.frame(x),file="outfile.txt",sep="\t", col.names = F, row.names = F, append = TRUE )
cat("\n", file = "outfile.txt", append = TRUE, fill = F )
})