Xml 加载多个文件,应用readChar()和R中的函数
我有一个文件名通过使用这个Xml 加载多个文件,应用readChar()和R中的函数,xml,r,function,Xml,R,Function,我有一个文件名通过使用这个 filenames <- list.files(getwd(), full.names=FLASE) > filenames [1] "2007_acura_mdx" "2007_acura_rdx" "2007_acura_rl" [4] "2007_acura_tl"
filenames <- list.files(getwd(), full.names=FLASE)
> filenames
[1] "2007_acura_mdx" "2007_acura_rdx" "2007_acura_rl"
[4] "2007_acura_tl" "2007_acura_tsx" "2007_audi_a3"
[7] "2007_audi_a4" "2007_audi_a6" "2007_audi_a8"
[10] "2007_audi_q7" "2007_audi_rs4" "2007_audi_s8"
文件名文件名
[1] “2007_acura_mdx”“2007_acura_rdx”“2007_acura_rl”
[4] “2007_acura_tl”“2007_acura_tsx”“2007_audi_a3”
[7] “2007年奥迪a4”“2007年奥迪a6”“2007年奥迪a8”
[10] “2007年奥迪q7”“2007年奥迪rs4”“2007年奥迪s8”
我想申请
> for (filename in filenames) {
+ sample <- readChar(filename, file.info(filename)$size )
+ }
Error in readChar(filename, file.info(filename)$size) :
invalid UTF-8 input in readChar()
>(文件名中的文件名){
+示例您可以使用在read\u html
中找到的读取XML的“宽恕”模式来读取该数据并制作数据帧:
library(dplyr)
library(xml2)
doc <- read_html("OpinRankDataset/cars/2007/2007_acura_mdx")
data_frame(
date=xml_text(xml_find_all(doc, "//doc/date")),
author=xml_text(xml_find_all(doc, "//doc/author")),
text=xml_text(xml_find_all(doc, "//doc/text")),
favorite=xml_text(xml_find_all(doc, "//doc/favorite"))
) -> dat
glimpse(dat)
## Variables: 4
## $ date (chr) "07/31/2009", "07/30/2009", "06/22/2009", "04/13/2009", "04/06/20...
## $ author (chr) "FlewByU", "cvillemdx", "Pleased", "wasatch7", "mnozek", "Debce",...
## $ text (chr) "I just moved to Germany two months ago and bought an 07 MDX from...
## $ favorite (chr) "The separate controls for the rear passengers are awesome. I can...
如果你想减少代码中的“手工劳动”,那么
library(XML)
doc <- htmlParse("OpinRankDataset/cars/2007/2007_acura_mdx")
xmlToDataFrame(nodes=getNodeSet(doc, "//doc"))
库(XML)
doc为什么要使用readChar
读取XML数据?XML
、xml2
、rvest
(以及其他)可以为您执行此操作(甚至可能包括提取和转换到数据帧)我使用的是dataset。但是,这不是真正的xml数据格式。因此,我以这种方式对其进行了修改和处理。这是一个示例数据,感谢您简单而有用的代码。而且,为了与dat合并作为模型名,我很想得到xml文件的第一行DOCNO。xml_text(xml_find_all(doc,//DOCNO))但是,结果是空的。有什么问题吗?再次提前感谢。xml\u find\u all(doc,//docno”)
withxml2
或xmlValue(doc[“//docno”]]
使用XML。再次感谢您提供的其他信息。是的,我注意到它已改为小写:)很高兴它有帮助!如果这确实回答了您的问题,它将帮助其他进行搜索的人勾选“接受答案”框(以便他们知道这是一个可行的解决方案)
bind_rows(lapply(xml_find_all(doc, "//doc"),
function(x) {
setNames(rbind.data.frame(xml_text(xml_children(x))), c("date", "author", "text", "favorite"))
}))
library(XML)
doc <- htmlParse("OpinRankDataset/cars/2007/2007_acura_mdx")
xmlToDataFrame(nodes=getNodeSet(doc, "//doc"))