【问题标题】:xml-tei in R: length(nodes) with one different valueR中的xml-tei:长度(节点)具有一个不同的值
【发布时间】:2017-03-11 23:07:57
【问题描述】:

抱歉,目前还没有足够的文档来解析 R 中的 xml-tei,尤其是对于 R 的初学者。

我正在计算几个具有函数“getNodeSet”的节点,它们在“包含”中只有一个不同的值。目的是根据特定的“包含”来计算“@type=verb”,该“包含”全部包含在“包含(@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]

但是每次写基本相同的东西当然很繁琐,而且不是很漂亮。

是否有可能有类似的东西(对不起,没有正确编码,只是一个满足我需要的例子):

#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

然后我寻找另一个具有不同值的节点。 但遗憾的是,它不起作用。

提前感谢您的建议。

【问题讨论】:

  • 到目前为止我做了什么:

标签: r xml tei


【解决方案1】:

到目前为止我做了什么:

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)

不知道有没有更简单的方法。

【讨论】:

    【解决方案2】:

    一位同事,“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
    

    效果很好!希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多