小编use*_*rJT的帖子

在R中解析XML:不正确的命名空间

我有一堆XML文件和一个R脚本,可以将其内容读入数据框.但是,我现在得到了我想像往常一样解析的文件,但是它们的命名空间定义中有些东西不允许我通常使用XPath表达式选择它们的值.

XML文件是这样的:

xml_nons.xml

<?xml version="1.0" encoding="UTF-8"?>
<XML>
   <Node>
      <Name>Name 1</Name>
      <Title>Title 1</Title>
      <Date>2015</Date>
   </Node>
</XML>
Run Code Online (Sandbox Code Playgroud)

和另外一个:

xml_ns.xml

<?xml version="1.0" encoding="UTF-8"?>
<XML xmlns="http://www.nonexistingsite.com">
   <Node>
      <Name>Name 2</Name>
      <Title>Title 2</Title>
      <Date>2014</Date>
   </Node>
</XML>
Run Code Online (Sandbox Code Playgroud)

xmlns指向的URL不存在.

我使用的R代码是这样的:

library(XML)

xmlfiles <- list.files(path = ".", 
                       pattern="*.xml$", 
                       full.names = TRUE, 
                       recursive = TRUE)

n <- length(xmlfiles)
dat <- vector("list", n)

for(i in 1:n){
       doc <- xmlTreeParse(xmlfiles[i], useInternalNodes = TRUE)
       nodes <- getNodeSet(doc, "//XML")
       x <- lapply(nodes, function(x){ data.frame(
              Filename = xmlfiles[i],
              Name = xpathSApply(x, ".//Node/Name" , xmlValue),
              Title …
Run Code Online (Sandbox Code Playgroud)

xml r xml-namespaces xml2

7
推荐指数
1
解决办法
795
查看次数

仅使用purrr包中的函数从嵌套列表中提取元素

如何仅使用purrr包从嵌套列表中提取元素?在这种情况下,我希望在分割data.frame后得到一个截距矢量.我已经使用lapply()完成了我需要的东西,但我想只使用函数purrr包.

library(purrr)
mtcars %>% 
split(.$cyl) %>%
map(  ~lm(mpg ~ wt, data = .)) %>%        # shorthand  NOTE: ~ lm  
lapply(function(x) x[[1]] [1]) %>% # extract intercepts  <==is there a purrr function for this line?
as_vector()                               # convert to vector
Run Code Online (Sandbox Code Playgroud)

我试过map()和at_depth()但似乎没有什么对我有用.

r purrr

7
推荐指数
1
解决办法
2758
查看次数

在R中,如果我有WSDL描述,我如何调用Web服务?(使用Web服务)

我不是SOAP和WSDL的专家,但我有Perl代码,我想将其移植到R.

Perl代码看起来像这样(来自https://www.pharmgkb.org/resources/downloads_and_web_services.jsp):

use SOAP::Lite;
import SOAP::Data 'type';

sub main {
  my $argcount = scalar (@ARGV);
  if ($argcount != 1) {
    print "usage: diseases.pl <PharmGKB accession id>\n";
    exit -1;
  }

  # make a web services call to server
  my $call = SOAP::Lite
    -> readable (1)
    -> uri('PharmGKBItem')
    -> proxy('http://www.pharmgkb.org/services/PharmGKBItem')
    -> searchDisease($ARGV[0]);

  if ($call->fault) {
    print $call->faultcode . ": " . $call->faultstring . "\n";
  } else {
    my $result = $call->result;
Run Code Online (Sandbox Code Playgroud)

阅读有关rsoap和SSOAP包的内容,但没有得到任何好消息.我需要的是完全支持,例如调用服务并提供库来解析输出.我更喜欢一些库而不是原始编码.我对XML包很好,对RCurl不太好.我认为R中没有好的和当前的(积极维护的)支持是正确的吗?

soap wsdl web-services r

6
推荐指数
1
解决办法
3083
查看次数

令人讨厌的"功能"(或错误?)为RODBC

RODBC是R中用于将数据从数据库导入R的主要库.RODBC似乎有能力"猜测"列的数据类型,我觉得它特别烦人.

我在test.xls 这里上传了一个文件,或者您可以自己创建一个xls文件:

  1. 创建2列,第一列命名col_a,第二列命名col_b.
  2. 输入你喜欢的任何内容col_a,我在这个列上键入了92行的字母
  3. 在col_b的第92行,在那里键入一个数字,我输入"1923"而不更改数据类型(即不使用')
  4. 尝试使用以下脚本将xls文件导入R:

library(RODBC)

setwd("C:/Users/hke775/Documents/Enoch/MISC/R_problems/RODBC")
channel <- odbcConnectExcel("test.xls",readOnly=TRUE)
dummy.df <- sqlFetch(channel,"Sheet1")
odbcClose(channel)
Run Code Online (Sandbox Code Playgroud)

你会看到,在dummy.df,col_b是所有NA1923在此列了.

如果您想1923再次查看,可以将第1行更改col_b为数字,然后再返回.

这非常烦人,因为我不喜欢手动修改数据.我需要使用其他包做XLS进口,但我找不到其他的包做的那样顺利RODBC(我试过gdataxlsReadWrite).

我在sqlFetch命令中遗漏了什么,并造成麻烦吗?谢谢.

import odbc xls r rodbc

5
推荐指数
1
解决办法
1141
查看次数

在R中,有没有办法在data.frame的整数列中处理NA,以便在子集化时不包括NA值?

我有一个像这样的data.frame:

(t=structure(list(count = c(NA, 2, NA, NA, NA, 8, NA, NA, NA)), .Names = "count", row.names = c(NA,-9L), class = "data.frame"))
  count
1    NA
2     2
3    NA
4    NA
5    NA
6     8
7    NA
8    NA
9    NA
Run Code Online (Sandbox Code Playgroud)

R具有NA值很好但有时它会咬我.我经常忘记它,并尝试像这样做子集

> t[t$count>=1,]
[1] NA  2 NA NA NA  8 NA NA NA
Run Code Online (Sandbox Code Playgroud)

输出包括所有NA行.(我不喜欢)

经过一个小时的错误搜索后,我将代码更改为此,这就是我想要的(想象大数据帧有很多非NA结果,只有少数"隐藏得很好"的NA):

> t[t$count>=1&!is.na(t$count),]
[1] 2 8
Run Code Online (Sandbox Code Playgroud)

1.是否有"as.integer"功能的功能,以便我可以这样做:

T [as.integer.EXCLUDE.NA(T $计数)> = 1,]

我想在其他as.xxxx函数中使用这样的功能.基本上强制R停止像统计学家一样思考并且不同地对待NA(例如,像NULL(我不确定NULL会解决我的问题)(这不起作用:t $ count [3] < - 由于某种原因为NULL)

2.或者我将如何运行

transform(t, replace all NAs …
Run Code Online (Sandbox Code Playgroud)

r transformation dataframe

5
推荐指数
2
解决办法
6634
查看次数

R: dbplyr: postgres: 如何在表上创建索引

用户有一个大表(3+ 十亿行)。为了加快接下来几个月的查询速度,必须在远程数据库上创建索引。

假设有一个名为的连接conn- 创建索引并使其在与数据库断开连接后持续存在的最佳方法是什么。

例如,

library(DBI)
sql<-'CREATE INDEX idx_pmid ON medcit  (pmid ASC);'
dbExecute(conn,sql)
dbDisconnect(conn)
Run Code Online (Sandbox Code Playgroud)

上面的代码似乎有效,但是如何以某种方式验证索引(确保它确实存在并加快未来的查询速度)?换句话说 - 用户如何检查索引的存在?另外,我是否需要以某种方式发出 COMMIT 命令?

postgresql r dbplyr

5
推荐指数
1
解决办法
433
查看次数

如何读取XML输入文件,操作一些节点(删除并重命名一些)并将输出写入新的XML输出文件?

我需要从互联网上读取一个XML文件并重新塑造它.这是我迄今为止的XML文件和代码.

library(XML)
url='http://ClinicalTrials.gov/show/NCT00001400?displayxml=true'  
doc = xmlParse(url,useInternalNode=TRUE)
Run Code Online (Sandbox Code Playgroud)

我能够使用XML包中的一些函数(例如,getNodeSet),但我不是专家,并且在互联网上有一些例子,但我自己无法解决这个问题.我也知道一些XPath,但这是4年前,我不是一个关于sapply和类似功能的专家.

但我的目标是:

  1. 我需要删除一整套关于位置的XML子分支,例如:<location> ... anything </location>.可以有多个具有位置数据的节点.我根本不需要输出中的细节.上面的XML文件始终符合XSD架构.调用根节点<clinical_study>.

  2. 生成的简化文件应写入名为"data-changed.xml"的新XML文件中.

  3. 我还需要重命名并从旧的嵌套位置移动一个分支

    <eligibility> <criteria> <textblock> Inclusion criteria are xyz </textblock/>...

  4. 在新输出("data-changed.xml")中,结构应该表示不同的XML节点并且直接位于根节点下:

    <eligibility_criteria> Inclusion criteria are xyz </eligibility_criteria>

所以我需要:

  • 将XML读入内存
  • 操纵树(在某处修剪)
  • 将一些XML节点移动到一个新的位置并以新的名称和
  • 编写生成的XML输出文件.

任何想法都非常感谢?

另外,如果您了解一个关于R内部XML解析的好(最近的!)教程(或者解决它的书籍章节,请分享参考).(我读过Duncan的小插曲,这些太过于先进(太简洁)).

xml r

4
推荐指数
1
解决办法
3913
查看次数

如何验证CCD HL7文档?

以CCD为例,应该使用:

  1. 一个XSD模式,并得出结论,我有一个有效的CCD。

    要么

  2. 我使用其他一些(基于非模式的)方法。(除了有效的XML文档外,UML模型规则。)

有没有这样的事情ccd.xsd?即使只是部分指导我创建有效的CCD。

xml validation hl7 ccd

4
推荐指数
2
解决办法
4838
查看次数

R中环境的目的是什么?当我需要使用多个环境时?

这是一个基本的R问题:R具有环境概念.那它的目的是什么,我什么时候需要启动一个以及如何在它们之间切换?多个环境的优势是什么(除了查找.Rdata文件的内容之外)?

r

4
推荐指数
3
解决办法
244
查看次数

R 中未定义的命名空间 xml2

我正在学习如何使用 R 来解析 XML,并且我正在尝试使用 Hadley 的 Wickhamxml2包来解析位于此处的TEI XML 文本文档(警告:这是一个压缩文件,我正在尝试解析的特定文件)在下面的代码中给出)。我试图了解命名空间在这个包中的工作原理(我无法理解我正在使用的特定文本的文档)。有了这个XML包,我可以执行以下操作:

library("XML")
crisis <- xmlParse("data/Crisis130_22.2.tei.xml")
all_divs <- getNodeSet(crisis, "//def:div",
                   namespaces=c(def = "http://www.tei-c.org/ns/1.0"))
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何做到这一点xml2。我要么收到inherits(x, "xml_document") is not TRUE错误,要么收到In node_find_all(x$node, x$doc, xpath = xpath, nsMap = ns) : Undefined namespace prefix [1219]错误。这是我尝试过的:

library("xml2")

crisis2 <- read_xml("data/Crisis130_22.2.tei.xml")

# check to see whether TEI URL is present
xml_ns(crisis2) 

all_divs2 <- xml_find_all(crisis2, "//div", xml_ns(crisis2)) # gives empty list

all_divs <- xml_find_all(crisis2, "/def:div", xml_ns(crisis2)) # undefined …
Run Code Online (Sandbox Code Playgroud)

xml xpath r xml-namespaces xml2

4
推荐指数
1
解决办法
1382
查看次数