Экспорт различий в листе xlxs в нужные ячейки с помощью R - PullRequest
0 голосов
/ 06 ноября 2018

Мне нужно сравнить несколько файлов (Prod1, Beta1, Prod2, Beta2 и т. Д.) И экспортировать различия в листе Excel, если таковые имеются. Это должно быть в отдельных ячейках (столбец C). Я пытаюсь с кодом ниже library(xlsx) Я могу хранить данные только в 1-й ячейке.

library(xlsx)
for(i in 1:No_of_files){

  prod_file_res_name <- sprintf("R/Results/F_Query_Prod_%s.txt", i)
  beta_file_res_name <- sprintf("R/Results/F_Query_Beta_%s.txt", i)

  if (file.exists(prod_file_res_name) && file.exists(beta_file_res_name))
  {
    res <- tools::Rdiff(prod_file_res_name, beta_file_res_name, Log = TRUE)

    if(res[2] != "character(0)"){

    write.xlsx(toString(res[2]), file = "C:/R/diff.xlsx", sheetName = "Sheet1", col.names = FALSE, row.names =FALSE, append = TRUE)

    }

    else{
  com <- "No Difference found"
  write.xlsx(com, file = "C:/R/diff.xlsx", sheetName = "ExtractFormulaHistory", col.names = FALSE, row.names =FALSE, append = TRUE)
    }
  }
  else {
    print("File doesnt exist")
  }
}

Может ли кто-нибудь помочь мне сохранить разницу в столбце 5, но в разных строках (пример: от 1 до X без файлов)? Заранее спасибо.

1 Ответ

0 голосов
/ 06 ноября 2018

Самый простой способ - создать tibble или list для хранения вывода, а затем на последнем шаге кода вывести его в Excel с использованием библиотеки xlsx.

В качестве альтернативы, вы можете использовать пакет writeWorksheet из XLConnect для записи в файл Excel, когда вы решаете различия.

Из документации пакета XLConnect:

# Load workbook (create if not existing)
wb <- loadWorkbook("writeWorksheet.xlsx", create = TRUE)

# Create a worksheet called 'CO2'
createSheet(wb, name = "CO2")

# Write built-in data set 'CO2' to the worksheet created above;
# offset from the top left corner and with default header = TRUE
writeWorksheet(wb, CO2, sheet = "CO2", startRow = 4, startCol = 2)

# Save workbook (this actually writes the file to disk)
saveWorkbook(wb)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...