我正在解析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的初学者......
答案 0 :(得分:0)
简短的回答是:你不能(摆脱NA
中的cbind()
),因为cbind()
意味着输出一个矩形表(data.frame
或{{ 1}}),这些要求所有列的长度一致。 matrix
是最接近“无价值”的。还有NA
,但NULL
无法填充表格的单元格。
这里似乎NULL
或data.frame
不是合适的数据结构,可能是列表形式的不规则数组:matrix
。
但是您的评论更清楚地表明真正的问题是关于显示而不是其他内容,所以仅适用于此特定情况,因为列表不适合干净显示,让我们保持矩阵。
所以它真的取决于你打算如何在最终输出中显示数据(LaTeX?HTML?从list(role = role, context = context, sphere = sphere, sex = sex)
复制粘贴?)
例如,您可以使用空字符print()
代替NA
进行“hacky”替换,例如:""
或使用catTab_ObjV[is.na(catTab_ObjV)] <- ""
等专用软件包,甚至不需要您“删除”xtable
:
NA