r - 用两个标题行写CSV?

标签 r

我可以将data.frame导出到具有两个标题行,一行用于列名和一行用于对列名进行注释的csv吗?例如,

d <- data.frame(a=c(1,3,4), b=c(5,6,7))
comment(d$a) <- "MWh"
comment(d$b) <- "%"
write.csv(d, "myfile.csv", ???)

任何提示赞赏,也对comment()的替代!

最佳答案

如果您想保留数据的数字性质,我认为我们不能使用简单的单行代码(@Chase提供的答案将数据类型更改为字符),但是我们可以通过一些操作来实现首先将names(d)和两个注释写到文件中,然后使用write.table()编写csv数据行的操作,然后在文件中追加我们刚才写的名称和注释:

write.csv3 <- function(d, file) {
    opts <- options(useFancyQuotes = FALSE)
    on.exit(options(opts))
    h1 <- paste(dQuote(c("", names(d))), collapse = ",")
    h2 <- paste(dQuote(c("", comment(d$a), comment(d$b))), collapse = ",")
    writeLines(paste(h1, h2, sep = "\n"), file)
    write.table(d, file, sep = ",", append = TRUE, col.names = FALSE)
}

这是一个例子:
> d <- data.frame(a=c(1,3,4), b=c(5,6,7))
> comment(d$a) <- "MWh"
> comment(d$b) <- "%"
> d
  a b
1 1 5
2 3 6
3 4 7
> write.csv3(d, file = "myfile.csv")

产生以下文件:
$ cat myfile.csv 
"","a","b"
"","MWh","%"
"1",1,5
"2",3,6
"3",4,7

与@Chase的答案所产生的结果相比:
$ cat output.csv 
"","a","b"
"1","MHh","%"
"2","1","5"
"3","3","6"
"4","4","7"

在这两者之间,您应该有足够的选择。

关于r - 用两个标题行写CSV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5144371/

相关文章:

r - 计算R中前两个主成分的最快方法是什么?

r - UseMethod中的错误(“group_vars”): no applicable method for 'group_vars' applied to an object of class “factor”

r - 如何使用 'data.table' 添加缺失日期并填充组内的值

r - hclust() 和 cutree ...如何在单个 hclust() 中绘制 cutree() 集群

r - 在R中,如何按组计算所有列的均值?

r - 使用 rjags 包进行贝叶斯多项式回归

r - ggplot 和 geom_text()

r - 组合ggplot中的图例位置

javascript - 带有 R : webshot. js 的 Webshot 返回失败值 1

r - 将代码和注释的颜色更改为 RStudio 标准语法颜色