在单个 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 进程是 运行 一次并且一直工作很长时间,显然不要这样做(在那种情况下读取和覆盖文件是荒谬的)
如何将我的 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 进程是 运行 一次并且一直工作很长时间,显然不要这样做(在那种情况下读取和覆盖文件是荒谬的)