【问题标题】:Write vectors of different length into csv file [closed]将不同长度的向量写入csv文件[关闭]
【发布时间】:2014-11-29 23:35:48
【问题描述】:

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

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

【问题讨论】:

  • 您应该发布代码作为对此问题的编辑。您还需要说明引用 csv 文件的“列”是什么意思。

标签: r vector dataframe export


【解决方案1】:

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

  1. 矢量是手动和单独处理的;如果有办法以编程方式处理它们(例如不同向量的列表,或允许简单自动化的命名约定),它将使以下一些事情变得更容易。
  2. “...每个向量在它自己的列中” 表示这些列彼此相邻,而不是连续的。我已经处理了具有多个列数不同的矩阵的 CSV 文件;这不正常,也不完全正确。

一些数据:

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 字符串。空白通常会更好地解释(尽管这取决于您和/或您与谁共享您的数据)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    相关资源
    最近更新 更多