Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 加载多个文件,应用readChar()和R中的函数_Xml_R_Function - Fatal编程技术网

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”)
with
xml2
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"))