3

我正在尝试将表格从 R 复制并粘贴到 Excel 中。考虑上一个问题中的以下代码:

    data <- list.files(path=getwd())
    n <- length(list)
    for (i in 1:n) 
     {
      data1 <- read.csv(data[i])
      outline <- data1[,2]
      outline <- as.data.frame(table(outline))
      print(outline)   # this prints all n tables
      name <- paste0(i,"X.csv")
      write.csv(outline, name)
      }

此代码将每个表写入单独的 Excel 文件(即“1X.csv”、“2X.csv”等)。有没有办法将每个表“移动”一些行而不是每次都重写前一个表?我也试过这段代码:

 output <- as.data.frame(output)
 wb = loadWorkbook("X.xlsx", create=TRUE)
 createSheet(wb, name = "output")
 writeWorksheet(wb,output,sheet="output",startRow=1,startCol=1)
 writeNamedRegion(wb,output,name="output")
 saveWorkbook(wb)

但这不会将数据框完全复制到 Excel 中。

4

2 回答 2

5

我认为,正如评论中提到的,要走的路是首先合并 R 中的数据帧,然后将它们写入(一个)输出文件:

# get vector of filenames
filenames <- list.files(path=getwd())

# for each filename: load file and create outline
outlines <- lapply(filenames, function(filename) {
  data <- read.csv(filename)
  outline <- data[,2]
  outline <- as.data.frame(table(outline))
  outline
})

# merge all outlines into one data frame (by appending them row-wise)
outlines.merged <- do.call(rbind, outlines)

# save merged data frame
write.csv(outlines.merged, "all.csv")
于 2013-02-28T15:03:06.383 回答
4

尽管微软希望你相信,.csv 文件不是 excel 文件,它们是一种常见的文件类型,可以被 excel 和许多其他程序读取。

最好的方法取决于你真正想要做什么。您是否希望所有表格都读入 Excel 中的单个工作表?如果是这样,您可以使用 the或其他函数的append参数写入单个文件。write.csv或者使用您保持打开的连接,以便附加每个新连接。您可能希望cat在每个新表之前放置几个换行符。

您的第二次尝试看起来像是使用 XLConnect 包(但您没有说,所以它可能是别的东西)。我认为这是最好的方法,结果与您的预期有何不同?

于 2013-03-01T01:45:01.040 回答