将不同长度的向量写入csv文件

时间:2014-11-29 23:35:48

标签: r vector dataframe export

我有几个不同长度的矢量要导出。 首先,我尝试制作这些的data.frame,但它们的长度不同,所以我不能。 其次,我尝试在write.csv时使用append = T,但是,所有的向量都在一行而不是几列。

我想将这些矢量导出到CSV文件中,每个矢量都在自己的列中。

1 个答案:

答案 0 :(得分:3)

你的例子很模糊,所以我会做出一些推论:

  1. 手动和单独处理矢量;如果有办法以编程方式处理它们(例如不同的向量列表,或允许简单自动化的命名约定),它将使下面的一些更容易。
  2. " ...每个向量在其自己的列中#34; 表示列彼此相邻,而不是连续。我处理过具有多个具有不同列数的矩阵的CSV文件;这不正常,也不太正确。
  3. 一些数据:

    set.seed(42)
    vec1 <- sample(100, size = 5)
    vec2 <- sample(100, size = 8)
    vec3 <- sample(100, size = 9)
    

    通常,当您尝试将列添加到R中的矩阵或data.frame时,它确实希望行数(或向量的长度)方便;如果没有,它会抱怨。所以,我们可以强制一些。

    df <- data.frame(vec1 = rep(NA, max(sapply(list(vec1, vec2, vec3), length))))
    df[1:length(vec1), 1] <- vec1
    df[1:length(vec2), 2] <- vec2
    df[1:length(vec3), 3] <- vec3
    df
    ##   V1 V2 V3
    ## 1 92 52 26
    ## 2 93 73 46
    ## 3 29 14 93
    ## 4 81 64 95
    ## 5 62 68 12
    ## 6 NA 44 99
    ## 7 NA 96 53
    ## 8 NA 87 85
    ## 9 NA NA 13
    

    现在我们可以将其写入CSV文件:

    write.csv(df, file = 'somefile.csv', row.names = FALSE, na = '')
    

    请注意,我选择na = ''作为选项;否则,您的CSV文件将在每个向量的末尾与最长向量的末尾之间的额外空格中具有NA个字符串。空白通常被解释得更好(尽管这取决于您和/或您与谁共享数据)。