在CSV文件中将矢量作为行附加

时间:2011-12-23 14:49:39

标签: r csv export-to-csv

我已经拥有的东西:

考虑以下数据 - 只是虚拟数据,真实数据是自动创建的:

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

我可以通过调用write.csv(resultMatrix, file="out.csv")将其写入CSV文件。


我需要什么:

由于结果文件是(当前)刚刚创建的,我想在评估后立即将这些features(即向量)写入CSV文件。

所以我认为我会使用write.csvappend,但该选项不适用于该方法。然后我想我可以使用write.table,但有两个问题:

  1. write.table不会缩进第一个空列名称,因此我的第一行会向左移动一行。

  2. 数据以某种方式错误地转置。见下面的例子。


  3. 我尝试了什么:

    另外,调用这些命令......

    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文件中?

1 个答案:

答案 0 :(得分:15)

两次调整将解决您的两个问题。

  • 要保持列标题的缩进,请使用非直观的(但记录在案的!)参数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)