在单个 sheet 的 xlsx 文件中附加 r 输出

Appending r output in a single sheet of xlsx file

如何将我的 R 输出附加到单个 sheet xlsx 文件中?我目前正在从事网络爬虫工作,其中我需要从网站上删除用户评论并将其以 xlsx 格式保存在我的桌面上。我每次都需要在我的代码中更改网站 url(因为用户评论在不同的页面)并将输出保存在一个 sheet 的 xlsx 文件中。

你能帮我在单个 sheet xlsx 文件中附加输出的代码吗?下面是我正在使用的代码:每次我需要更改网站 url 和 运行 相同的下面代码并将相应的输出保存在单个 sheet 或 mydata.xlsx

library("rvest")
htmlpage <- html("http://www.glassdoor.com/GD/Reviews/Symphony-Teleca-Reviews-E28614_P2.htm?sort.sortType=RD&sort.ascending=false&filter.employmentStatus=REGULAR&filter.employmentStatus=PART_TIME&filter.employmentStatus=UNKNOWN")
proshtml <- html_nodes(htmlpage, ".pros")
pros <- html_text(proshtml)
pros

data=data.frame(pros)

library(xlsx)
write.xlsx(data, "D:/mydata.xlsx", append=TRUE)

查看包裹xlsx

?write.xlsx 会告诉你你想要什么。 append=TRUE 是关键。

========= 编辑更正 =========

正如@Jakub 指出的那样,append=TRUE 向文件中添加了另一项工作sheet。

========= 编辑添加:另一种方法 ==========

另一种方法是将数据保存到 .csv 文件,可以从 excel 轻松打开。在这种情况下,append=T 按预期工作(添加到现有 sheet):

write.table(df,"D:/MyFile.csv",append=T,sep=",")

一个简单但超级慢的方法:

如果您只需要向现有 Excel 文件添加(几行)行,并且它只有一个 sheet 要追加,您可以这样做一个简单的读取 => 覆盖步骤:

SHEET.NAME <- '...' # fill in with yours
existing.data <- read.xlsx(file, sheetName = SHEET.NAME)
new.data <- rbind(existing.data, data)
write.xlsx(new.data, file, sheetName = SHEET.NAME, row.names = F, append = F)

注:

  • 总的来说很慢,只适用于小规模
  • read.xlsx 是一个慢函数。尝试 read.xlsx2 使其更快(查看文档中的差异)
  • 如果你的 R 进程是 运行 一次并且一直工作很长时间,显然不要这样做(在那种情况下读取和覆盖文件是荒谬的)