我可以将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/