ROBDC SqlSave:如何将数据导出到Excel工作表?

我试图从R导出数据到一个Excel文件(到不同的工作表):

library(plyr) library(RODBC) g <- lapply(iris, function(x) as.data.frame(table(x))) save2excel <- function(x) sqlSave(xlsFile, x, tablename = x[1], rownames = FALSE) xlsFile <- odbcConnectExcel("C:/Temp/iris.xls", readOnly = FALSE) l_ply(g, save2excel) odbcCloseAll() 

这会产生错误:

 Error in sqlColumns(channel, tablename) : '1:35': table not found on channel 

问题在于tablename = x[1] ,如何将列表名称换成表名?

你必须以某种方式为你的函数提供names(g) 。 最简单的解决scheme看起来像mapply

此外,无论出于何种原因,Excel ODBC驱动程序似乎不像工作表名称中的点,即使Excel本身可以处理它们。 所以你必须改变你的名字,如“Sepal.Length”,“Sepal_Length”等。

在全:

 g <- lapply(iris, function(x) as.data.frame(table(x))) names(g) <- gsub("\\.", "_", names(g)) xl <- odbcConnectExcel("c:/temp/iris.xls", readOnly=FALSE) mapply(sqlSave, dat=g, tablename=names(g), MoreArgs=list(channel=xl, rownames=FALSE)) odbcCloseAll()