用R头写入.xlsx

是否有可能写一个双头的.xlsx data.frame / data.table? 我的数据包含数字,date和string列。 请在下面find一个例子。

example <- data.frame(Number=c(1:5), Date=as.Date('1999-10-31','1999-10-31','1999-10-31','1999-10-31','1999-10-31','1999-10-31'), String=LETTERS[1:5]) 

说,我想有一个双数字头,数字是“一”,date是“两”,string是“三”。 但显然我不能把他们放在第1行,因为他们的第二列名是string,有些列是date/数字。

任何想法呢?

@编辑:例如:

 example <- data.frame(Number=c("One",as.character(1:5)), Date=c("Two",'1999-10-31','1999-10-31','1999-10-31','1999-10-31','1999-10-31'), String=c("Three",LETTERS[1:5])) Number Date String 1 One Two Three 2 1 1999-10-31 A 3 2 1999-10-31 B 4 3 1999-10-31 C 5 4 1999-10-31 D 6 5 1999-10-31 E 

但现在显然所有的列都是string…我需要它们作为特定字段的数字和date。 谢谢。

例如,您可以使用XLConnect包。 这是一个使用mtcars数据的玩具示例。 你只需要colnames进行:首先只写出colnames (在data.frame )并像通常一样从第二行写入数据。

 library(XLConnect) header <- data.frame(t(colnames(mtcars))) header ## X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 ## 1 mpg cyl disp hp drat wt qsec vs am gear carb writeWorksheetToFile(file = "/tmp/file.xlsx", data = header, sheet = "test", startRow = 1, header = FALSE) ### Write the data as usual keeping the colnames writeWorksheetToFile(file = "/tmp/file.xlsx", data = mtcars, sheet = "test", startRow = 2) 

使用你提供的数据,你可以这样:

 header <- as.data.frame(rbind(c("One", "Two", "Three"))) example <- data.frame(Number=c(1:5), Date=as.Date('1999-10-31','1999-10-31', '1999-10-31','1999-10-31', '1999-10-31','1999-10-31'), String=LETTERS[1:5]) writeWorksheetToFile(file = "/tmp/file2.xlsx", data = header, sheet = "test", startRow = 1, header = FALSE) writeWorksheetToFile(file = "/tmp/file2.xlsx", data = example, sheet = "test", startRow = 2) 

你可以像这样“覆盖” write.csv()函数

 New_write.csv <- function(file,example) { Header1 <- paste(names(example),collapse=",") Header2 <- paste(c("one","Two","Three"),collapse=",") writeLines(paste(Header1,Header2,sep="\n"),file) write.table(example, file, sep = ",", append = TRUE, col.names = FALSE,row.names=F) } 

然后通常这样调用它:

 New_write.csv("example.csv",example)