2011-12-14 14 views
2

は、私は(別のシートに)1つのExcelファイルにRからデータをエクスポートしようとしている:これはエラーに発生しROBDC SqlSave:データを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]にあり、どのようにリストを取得するにはシート名に名前を付ける?

答えて

2

何らかの理由でnames(g)を提供する必要があります。最も簡単な解決策は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() 
関連する問題