为R中的变量分配任意名称

时间:2013-10-24 16:46:24

标签: r csv io names statnet

在读取属性的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%运算符。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您也可以使用[[characterVariable]]选择变量(假设nodeInfo是列表或data.frame):

for (n in names(nodeInfo)) {
    pred_net %v% n <- nodeInfo[[n]]
}

答案 1 :(得分:0)

我知道这是很久以前的事了,但我遇到了同样的问题,因此遇到同样问题的人可能会发现我的解决方案很有用。我通过将因子转换为字符串来解决它。基本上在最初的df中,var都不应该是因素,所以请确保使用stringsAsFactors = F然后网络将接受df属性。