如何摆脱在cbind中的NA

时间:2017-03-17 23:26:50

标签: r xml cbind

我正在解析XML-TEI文件。在this explanation for different length个向量之后,我有了这个脚本:

cat_xmlID <- getNodeSet(doc, "//ns:category/@xml:id", ns)
cat_xmlID

role=unlist(cat_xmlID[27:29])
context=unlist(cat_xmlID[9:25]) 
sphere=unlist(cat_xmlID[4:7])
sex=unlist(cat_xmlID[49:50]) 


n <- max(length(context), length(role), length(sphere), length(sex))
length(context) <-n 
length(role) <-n 
length(sphere) <-n 
length(sex) <-n 
catTab_ObjV=cbind(role, context, sphere, sex)
catTab_ObjV

结果:

    role          context        sphere      sex        
id "active"      "ritual"       "inside"    "male_Sx"  
id "passive"     "battle"       "outside"   "female_Sx"
id "both_active" "singleCombat" "unknown_S" NA         
   NA            "prayer"       "B_ctx_S"   NA         
   NA            "assembly"     NA          NA         
   NA            "feast"        NA          NA         
   NA            "wedding"      NA          NA         
   NA            "burial"       NA          NA         
   NA            "seduction"    NA          NA         
   NA            "meeting"      NA          NA         
   NA            "complaint"    NA          NA         
   NA            "lawsuit"      NA          NA         
   NA            "threat"       NA          NA         
   NA            "revenge"      NA          NA         
   NA            "visit"        NA          NA         
   NA            "unknown_C"    NA          NA         
   NA            "B_ctx_C"      NA          NA  

当然,我有很多新手。我没有理解在上述帖子和其他几篇文章中如何摆脱NA的解释 - 没有给出cbind函数的NA的相关解释。 我必须说我是R的初学者......

你能帮帮我吗? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

简短的回答是:你不能(摆脱NA中的cbind()),因为cbind()意味着输出一个矩形表(data.frame或{{ 1}}),这些要求所有列的长度一致。 matrix是最接近“无价值”的。还有NA,但NULL无法填充表格的单元格。

这里似乎NULLdata.frame不是合适的数据结构,可能是列表形式的不规则数组:matrix

但是您的评论更清楚地表明真正的问题是关于显示而不是其他内容,所以仅适用于此特定情况,因为列表不适合干净显示,让我们保持矩阵。

所以它真的取决于你打算如何在最终输出中显示数据(LaTeX?HTML?从list(role = role, context = context, sphere = sphere, sex = sex)复制粘贴?) 例如,您可以使用空字符print()代替NA进行“hacky”替换,例如:""

或使用catTab_ObjV[is.na(catTab_ObjV)] <- ""等专用软件包,甚至不需要您“删除”xtable

NA

exemple xtable

相关问题