簡體   English   中英

如何不覆蓋R中的文件

[英]How to not overwrite file in R

我正在嘗試將表格從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中。

我認為,正如評論中所提到的,要走的路是首先合並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")

盡管微軟希望你相信,.csv文件不是excel文件,它們是excel和許多其他程序可以讀取的常見文件類型。

最好的方法取決於你真正想做的事情。 您是否希望將所有表讀入Excel中的單個工作表? 如果是這樣,您可以使用write.csv或其他函數的append參數寫入單個文件。 或者使用您保持打開的連接,以便附加每個新連接。 您可能希望使用cat在每個新表之前放置幾個換行符。

你的第二次嘗試看起來像是使用XLConnect包(但你沒有說,所以它可能是其他東西)。 我認為這是最好的方法,結果與你的期望有什么不同?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM