Присвоение произвольных имен переменным в 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.