在r中写入固定宽度的csv文件

我读取一个文件,改变它的内容,然后我想写入一个新的文件的dataframe 。 错误的是,在Excel中不能调整列的宽度(它不保存更改)。 我想知道是否有可能写满足最长的列宽的CSV文件。

 dat <- read.csv("Input.csv") # Do some processing #Write the new file write.csv(dat, "Output.csv", row.names=FALSE) 

编辑1:

 dat <- read.csv("Input.csv") createSheet(wb, "test") writeWorksheet(wb, dat, "test") colWidths <- sapply(1:ncol(dat), function(i) max(c(8, nchar(c(names(dat)[i], as.character(dat[, i])))))) setColumnWidth(wb, "test", 1:ncol(dat), colWidths * 256) saveWorkbook(wb) 

我做错了什么? 它写入一个空文件。

不要紧,你为你的csv写什么宽度; 当您打开它时,Excel将始终具有其默认列宽。

您的select是:

  1. 接受这种行为。
  2. 从Excel重新保存文件(.xls或.xlsx)
  3. 使用直接导出Excel文件的包从R写入文件。 XLConnect会这样做,甚至有一个setColumnWidth函数来设置R内的列宽。

例如

 dat <- data.frame(x = 1:24, `Long Column Name` = 25:48, `Wide Column` = paste(LETTERS, collapse = " ")) library("XLConnect") wb <- loadWorkbook("Output.xlsx", create = TRUE) createSheet(wb, "Output") writeWorksheet(wb, dat, "Output") colWidths <- sapply(1:ncol(dat), function(i) max(c(8, nchar(c(names(dat)[i], as.character(dat[, i]))))) setColumnWidth(wb, "Output", 1:ncol(dat), colWidths * 256) saveWorkbook(wb) 

在R中运行write.csv之前,可能需要closuresExcel中的.csv,因为Excel会locking该文件。

如果这是你想要的,也可以像这样填充列。