【问题标题】:Assigning arbitrary names to variables in R为R中的变量分配任意名称
【发布时间】:2013-11-03 12:15:14
【问题描述】:

在读取属性的 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

这很好用,但是,我不知道名字(id、年龄、性别等)并且想做这样的事情:

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% 运算符。有什么想法吗?

【问题讨论】:

  • 什么是 nodeInfo ?一个data.frame?

标签: r csv io names statnet


【解决方案1】:

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

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

【讨论】:

  • 您可能希望使用[[ 而不是[,具体取决于nodeInfo 的结构。
  • @Justin:是的,[[ 更好,因为它直接返回一个向量。反正要看nodeInfo的结构...
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2012-07-31
    • 2015-09-16
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    相关资源
    最近更新 更多