在读取属性的CSV之后,我想将它们应用于现有对象(使用特定于statnet的约定)。如果我提前知道这些名字,我会这样做:
pred_net %v% "id" <- nodeInfo$id
pred_net %v% "age" <- nodeInfo$age
pred_net %v% "sex" <- nodeInfo$sex
pred_net %v% "handed" <- nodeInfo$handed
pred_net %v% "lastDocVisit" <- nodeInfo$lastDocVisit
这很好,但是,我不知道名字(身份,年龄,性别等),并希望做这样的事情:
for (n in names(nodeInfo)) {
pred_net %v% n <- nodeInfo$n
}
...这给了我一个错误:
Error in set.vertex.attribute(x, attrname = attrname, value = value) :
Inappropriate value given in set.vertex.attribute.
据推测,这是因为变量名n不作为字符串处理以传递给%v%
运算符。有什么想法吗?
答案 0 :(得分:2)
您也可以使用[[characterVariable]]
选择变量(假设nodeInfo是列表或data.frame
):
for (n in names(nodeInfo)) {
pred_net %v% n <- nodeInfo[[n]]
}
答案 1 :(得分:0)
我知道这是很久以前的事了,但我遇到了同样的问题,因此遇到同样问题的人可能会发现我的解决方案很有用。我通过将因子转换为字符串来解决它。基本上在最初的df中,var都不应该是因素,所以请确保使用stringsAsFactors = F然后网络将接受df属性。