r - 从数据帧写入 gzip 文件

标签 r zip compression gzip vowpalwabbit

我正在尝试将数据帧写入 gzip 文件,但遇到问题。

这是我的代码示例:

df1 <- data.frame(id = seq(1,10,1), var1 = runif(10), var2 = runif(10))

gz1 <- gzfile("df1.gz","w" )
writeLines(df1)

Error in writeLines(df1) : invalid 'text' argument

有什么建议吗?

编辑: 我试图编写的字符向量的示例行是:

0 | var1:1.5 var2:.55 var7:1250

类标签/y 变量与 x 变量之间通过“|”分隔,变量名称与值之间通过“:”以及变量之间的空格分隔。

编辑2: 我对问题的措辞/格式表示歉意,但结果如下: 旧方法:

system.time(write(out1, file="out1.txt"))
#    user  system elapsed 
#   9.772  17.205  86.860 

新方法:

writeGzFile <- function(){
  gz1 = gzfile("df1.gz","w");
  write(out1, gz1);
  close(gz1) 
}

system.time( writeGzFile())
#    user  system elapsed 
#   2.312   0.000   2.478 

非常感谢大家帮我解决这个问题。

最佳答案

writeLines 需要一个字符串列表。将其写入 gzip 文件的最简单方法是

df1 <- data.frame(id = seq(1,10,1), var1 = runif(10), var2 = runif(10))
gz1 <- gzfile("df1.gz", "w")
write.csv(df1, gz1)
close(gz1)

这会将其写为 gzipped csv。另请参阅 write.tablewrite.csv2 了解写出文件的其他方法。

编辑:根据对所需格式的帖子的更新,我制作了以下帮助器(快速拼凑在一起,可能承认大量的简化):

function(df) {
    rowCount <- nrow(df)
    dfNames <- names(df)
    dfNamesIndex <- length(dfNames)
    sapply(1:rowCount, function(rowIndex) {
        paste(rowIndex, '|', 
            paste(sapply(1:dfNamesIndex, function(element) {
                c(dfNames[element], ':', df[rowIndex, element])
            }), collapse=' ')
        )
    })
}

所以输出看起来像

a <- data.frame(x=1:10,y=rnorm(10))
writeLines(myser(a))
# 1 | x : 1 y : -0.231340933021948
# 2 | x : 2 y : 0.896777389870928
# 3 | x : 3 y : -0.434875004781075
# 4 | x : 4 y : -0.0269824962632977
# 5 | x : 5 y : 0.67654540494899
# 6 | x : 6 y : -1.96965253674725
# 7 | x : 7 y : 0.0863177759402661
# 8 | x : 8 y : -0.130116466571162
# 9 | x : 9 y : 0.418337557610229
# 10 | x : 10 y : -1.22890714891874

所需要做的就是将 gzfile 传递给 writeLines 以获得所需的输出。

关于r - 从数据帧写入 gzip 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14225566/

相关文章:

python - 用 Python 解压缩缓冲区?

r - 转置 data.frame 并计算每列的非 NA 值

Rscript 使用不正确的 R 版本

android - 如何创建普通的受密码保护的 ZIP 存档?

mysql innodb 表的 row_format 不一致

Android - 视频压缩

javascript - 在HTML页面中播放.m4a音频文件不起作用

r - Grep 变量并将结果存储在 R 中的向量中

r - 为什么数据框列上的 $ 和 [ 给出不同的输出表示和数据类型?

python - 在Python3中从zip存档中提取特定文件夹的内容