2017-03-11 55 views
0

对不起,不存在用于R中解析XML亭又足够文档,特别是对在R.XML亭在R:长度(节点)具有一个不同的值

初学者

我正在与计数若干节点函数'getNodeSet'在'contains'中只有一个不同的值。其目的是根据特定的'contains'来计算'@ type = verb',其中'contains'具有所有'commun'包含(@ana,'#action')'。示例:

#different value "@ana, '#displacement'" 
nodes=getNodeSet(doc,"//ns:w[contains(@type,'verb') and contains(@ana,'#action') and contains(@ana, '#displacement') and contains(@ana, '#ANT')]", ns) 
VARIABLE NAME01 <- length(nodes) 
VARIABLE NAME01 
#result in the console [2] 

#different value "@ana, '#put_together'" 
nodes=getNodeSet(doc,"//ns:w[contains(@type,'verb') and contains(@ana,'#action') and contains(@ana, '#put_together') and contains(@ana, '#ANT')]", ns) 
VARIABLE NAME02 <- length(nodes) 
VARIABLE NAME02 
#result in the console [0] 

#different value "@ana, '#destruction'" 
nodes=getNodeSet(doc,"//ns:w[contains(@type,'verb') and contains(@ana,'#action') and contains(@ana, '#destruction') and contains(@ana, '#ANT')]", ns) 
VARIABLE NAME03 <- length(nodes) 
VARIABLE NAME03 
#result in the console [7] 

但是,每次写出基本相同的东西当然非常繁琐,它不是很漂亮。

是否有可能有类似(对不起,不propertly编码,只是一个榜样我需要):

#a condition 
For node=getNodeSet(doc,"//ns:w[contains(@type,'verb') and contains(@ana,'#action') and not(contains(@ana, '#ANT'))]" 
#add in contains 
( 
(@ana, ‘DIFFERENT VALUE01') FOR VARIABLE01 
(@ana, ‘DIFFERENT VALUE02') FOR VARIABLE02 
(@ana, ‘DIFFERENT VALUE03') FOR VARIABLE03 
) 
#etc. 

你有一个想法?

后,我需要能够添加结果:

add_result <- sum(VARIABLE NAME01, VARIABLE NAME02, VARIABLE NAME03) 
add_result 

但后来,我在想:

nodes=sum(
(getNodeSet(doc,"//ns:w[contains(@ana,'#action') and contains(@type,'verb')]", ns)), 
(getNodeSet(doc,"//ns:w[contains(@type,'verb') and contains(@type,'verb')]", ns)) 
) 
add_result <- length(nodes) 
add_result 

,然后我去找其他的节点用不同的值。 但可悲的是,它不起作用。

提前,感谢您的建议。

+0

我到目前为止做了什么: – Vanessa

回答

0

一位同事, 'R' 的专家,帮助我,并提出:

typeAction=c("'#displacement'","'#put_together'","'#agression'","'#confrontation'","'#movement'","'#otherAction'") 
total_action_ANT=0 
for (i in 1:length(typeAction)) total_action_ANT=total_action_ANT+length(getNodeSet(doc,paste0("//ns:w[contains(@type,'verb') and contains(@ana,'#action') and contains(@ana, ",typeAction[i],") and contains(@ana, '#ANT')]"), ns)) 
total_action_ANT 

nodelist=list() 
for (i in 1:length(typeAction))nodelist[[i]]=getNodeSet(doc,paste0("//ns:w[contains(@type,'verb') and contains(@ana,'#action') and contains(@ana, ",typeAction[i],") and contains(@ana, '#ANT')]"), ns) 
str(nodelist) 
resultats = cbind(action=typeAction,occurences=unlist(lapply(nodelist,function(x)length(x)))) 
resultats 

它的伟大工程!希望这会有所帮助。

0

我做了什么至今:

nodes=getNodeSet(doc,"//ns:w[contains(@type,'verb') and contains(@ana,'#action') and contains(@ana, '#displacement') and contains(@ana, '#ANT')]", ns) 
nodes=getNodeSet(doc,"//ns:w[contains(@type,'verb') and contains(@ana,'#action') and contains(@ana, '#put_together') and contains(@ana, '#ANT')]", ns) 
VARIABLE NAME01 <- length(nodes) 
VARIABLE NAME02 <- length(nodes) 

不知道是否有一个更简单的方法来做到这一点。

+0

不幸的是,它不工作... – Vanessa

相关问题