18352


Rのファイル出力に関してです．

次のようなベクトルと行列があったときに，

[code]

    x <- c(1:3)
    y <- matrix(1:9, nrow = 3, ncol = 3)
    z <- matrix(1:15, nrow = 3, ncol = 5)
    
[/code]

このようなcsvを出力したいです．

[code]

    1,1,4,7,1,4,7,10,13\n
    2,2,5,8,2,5,8,11,14\n
    3,3,6,9,3,6,9,12,15\n
    
[/code]

変数で表すとこうなります．

[code]

    x[1],y[1,],z[1,]
    x[2],y[2,],z[2,]
    x[3],y[3,],z[3,]
    
[/code]

単に

[code]

    write.table(y[1,],"test.csv", append = T,quote = F,sep=",",row.names = F,col.names = F)
    
[/code]

というふうにやると

[code]

    1\n
    4\n
    7\n
    
[/code]

となってしまってダメでした．


CC BY-SA 3.0
2015-11-03T06:46:59.703
18351
2015-11-03T08:13:49.783
13075
question
r
Rのファイル出力： ベクトルと行列を1つの行に出力したい


こういう事でしょうか？

[code]

    > cbind(as.matrix(x), y, z)
         [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
    [1,]    1    1    4    7    1    4    7   10   13
    [2,]    2    2    5    8    2    5    8   11   14
    [3,]    3    3    6    9    3    6    9   12   15
    
    > write.table(cbind(as.matrix(x), y, z), "test.csv",
                  quote = F, sep=",", row.names = F, col.names = F)
    
[/code]

> 行列にNAが含まれていて，NAの要素を詰めて出力する際にはどうしたら良いでしょうか

以下ではどうでしょうか。

[code]

    apply(cbind(as.matrix(x), y, z), 1,
          function(r){
            write.table(t(r[!is.na(r)]), "test.csv",
                        append=T, quote = F, sep=",", row.names = F, col.names = F) })
    
[/code]

※ `append=T` としていますので、複数回実行すると追記されていく事になります


CC BY-SA 3.0
2015-11-03T06:54:11.127
18352
2015-11-03T08:13:49.783
2015-11-03T08:13:49.783
18351
answer