Salvador Dali
Salvador Dali

Reputation: 222999

igraph assign a vector as an attribute for a vertex

I am trying to assign a vector as an attribute for a vertex, but without any luck:

# assignment of a numeric value (everything is ok)
g<-set.vertex.attribute(g, 'checked', 2, 3)
V(g)$checked

.

# assignment of a vector (is not working)
g<-set.vertex.attribute(g, 'checked', 2, c(3, 1))
V(g)$checked

checking the manual, http://igraph.sourceforge.net/doc/R/attributes.html it looks like this is not possible. Is there any workaround?

Up till now the only things I come up with are:

store this

Upvotes: 4

Views: 2107

Answers (1)

agstudy
agstudy

Reputation: 121626

This works fine:

## replace c(3,1) by list(c(3,1))
g <- set.vertex.attribute(g, 'checked', 2, list(c(3, 1)))
V(g)[2]$checked
[1] 3 1

EDIT Why this works? When you use :

    g<-set.vertex.attribute(g, 'checked', 2, c(3, 1))

You get this warning :

number of items to replace is not a multiple of replacement length

Indeed you try to put c(3,1) which has a length =2 in a variable with length =1. SO the idea is to replace c(3,1) with something similar but with length =1. For example:

 length(list(c(3,1)))
[1] 1
> length(data.frame(c(3,1)))
[1] 1

Upvotes: 5

Related Questions