我可以将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", ???)
Run Code Online (Sandbox Code Playgroud)
任何暗示赞赏,也评论()的替代品!
Rei*_*son 11
如果你想保留数据的数字特性,我认为我们不能用一个简单的单行代码(@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)
}
Run Code Online (Sandbox Code Playgroud)
这是一个例子:
> 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")
Run Code Online (Sandbox Code Playgroud)
其中产生以下文件:
$ cat myfile.csv
"","a","b"
"","MWh","%"
"1",1,5
"2",3,6
"3",4,7
Run Code Online (Sandbox Code Playgroud)
与@ Chase的答案相比:
$ cat output.csv
"","a","b"
"1","MHh","%"
"2","1","5"
"3","3","6"
"4","4","7"
Run Code Online (Sandbox Code Playgroud)
在两者之间,你应该有足够的选择.
在写出来之前是否可以将rbind()您的评论放在顶部data.frame?如果创建新对象,则不会影响现有列的结构或类。
d <- data.frame(a=c(1,3,4), b=c(5,6,7))
output <- rbind(c("MHh", "%"), d)
write.csv(output, "output.csv")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4262 次 |
| 最近记录: |