8

私がすでに持っているもの:

次のデータについて考えてみます。単なるダミーデータであり、実際のデータは自動的に作成されます。

features <- numeric(0)
features <- c(features, 1, 2, 3, 4, 5, 6)
features2 <- numeric(0)
features2 <- c(features2, 1, 2, 3, 4, 5, 6)
featureVectors <- list()
featureVectors[["file1"]] <- features
featureVectors[["file2"]] <- features2
resultMatrix <- do.call(rbind, featureVectors)
colnames(resultMatrix) <- c("SPEC_MEAN", "SPEC_SD", "SPEC_MODE", "AUTOC_MEAN", "AUTOC_SD", "ZC_MEAN")

これにより、次のような出力が生成されます。

      SPEC_MEAN SPEC_SD SPEC_MODE AUTOC_MEAN AUTOC_SD ZC_MEAN
file1         1       2         3          4        5       6
file2         1       2         3          4        5       6

を呼び出すことで、これをCSVファイルに書き込むことができますwrite.csv(resultMatrix, file="out.csv")


必要なもの:

features結果ファイルは(現在)その場で作成されているので、評価されたらすぐにこれら(つまりベクトル)をCSVファイルに書き込みたいと思います。

write.csvそのため、andを使用すると思いappendましたが、このメソッドではオプションを使用できません。その後、使用できると思いwrite.tableましたが、2つの問題があります。

  1. write.table最初の空の列名をインデントしないため、最初の行が1つ左にシフトされたままになります。

  2. データがどういうわけか間違って転置されています。以下の例を参照してください。


私が試したこと:

また、これらのコマンドを呼び出す…

write.table(resultMatrix, file="data-appended.csv", sep=",")
write.table(features, file="data-appended.csv", sep=",", append=TRUE, col.names=FALSE)

…この結果が生成されます:

"SPEC_MEAN","SPEC_SD","SPEC_MODE","AUTOC_MEAN","AUTOC_SD","ZC_MEAN"
"file1",1,2,3,4,5,6
"file2",1,2,3,4,5,6
"1",1
"2",2
"3",3
"4",4
"5",5
"6",6

…それは私が望んでいることではありません。featuresでは、名前を含むベクターのコンテンツをfile既存のCSVファイルに追加するにはどうすればよいですか?

4

1 に答える 1

15

2つの調整により、2つの問題が解決します。

  • 列ヘッダーのインデントを維持するには、直感的でない(ただし文書化されている!)引数を使用しますcol.names=NA

    write.table(resultMatrix, file = "data-appended.csv", sep = ",", 
                col.names = NA)
    
  • features(ベクトル)を列ではなく行として書き込むには、転置して行列に変換してから、 write.table():に渡します。

    FF <- as.matrix(t(features))
    write.table(FF, file = "data-appended.csv", sep = ",", 
                col.names = FALSE, append=TRUE)
    
于 2011-12-23T15:10:25.437 に答える