如何在R中导出Matspliter修改的矩阵
我需要将一个矩阵从R导出到一个*.txt文件,该文件已使用Matspliter函数拆分,而不会丢失创建的格式,即,我需要数据包含在三行五列的子集中 Matsplitter功能:如何在R中导出Matspliter修改的矩阵,r,matrix,output,R,Matrix,Output,我需要将一个矩阵从R导出到一个*.txt文件,该文件已使用Matspliter函数拆分,而不会丢失创建的格式,即,我需要数据包含在三行五列的子集中 Matsplitter功能: 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(la
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}
随着每一组新数据的增加,“tstep”也随之增加。如果我理解正确,目标是:
- 制表符分隔列
- 每行换一行
- 每组增加一行
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 )
})
test Try?capture.output
即capture.output(matspliter(B,3,5),file='outfile.txt')
如果您需要保留输出的外观,这确实会产生类似于我需要的东西,我仍然需要删除列名和行名。如果您显示几行您希望获得的预期输出,那会更好。您是否需要分隔数组元素的,1
。这可能已经澄清了问题,我选择用任意数据构造一个示例。实际上,我不需要分隔数组的“.1”,但是在下一步(我想一次只问一个问题)中,我会用另一个字符串替换“.1”。您是否使用write.table
尝试过发布的解决方案。它可能符合您的规格。另外,在使用capture.output
创建outfile.txt
后,您可以删除列/行名称
,即write.table(gsub('\\[.\\\\]','',readLines('outfile.txt')、file='outfile.txt',row.names=FALSE,quote=FALSE)
,如果您在linux上工作,这可以通过awk
解决,上面的应用程序给了我一个错误“如果(d2==0L){:需要真/假时缺少值”@eze我认为test@eze输入数组必须有3维(正如akrun所说:test
这里是matsplitter的结果)
"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
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 )
})