Присвоение произвольных имен переменным в R

После прочтения в 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% оператор. Есть идеи?

2 ответа

Решение

Вы можете выбрать переменную также с [[characterVariable]] (предположим, что nodeInfo это список или data.frame):

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

Я знаю, что это было давно, но у меня была та же проблема, поэтому люди, которые сталкивались с той же проблемой, могли бы найти мое решение полезным. Я решил это, приведя факторы к строкам. По сути, в начальной df ни одна из переменных не должна быть факторами, поэтому убедитесь, что вы используете stringsAsFactors=F, и тогда сеть примет атрибут df.

Другие вопросы по тегам