R 带字符串的图形-边必须是数字或字符

R 带字符串的图形-边必须是数字或字符,r,igraph,R,Igraph,下面是一些用于生成显示生成的层次结构的图形的代码,但它不显示并返回以下错误: 图形(设备)中出错:“边”必须是数字或字符 代码如下: library(igraph) # n = num of field devices generate_hierarchy <- function(n=100, levels=3) { k <- c() for(i in 0:n) { curDevice <- paste("device", i) # For lower

下面是一些用于生成显示生成的层次结构的图形的代码,但它不显示并返回以下错误:

图形(设备)中出错:“边”必须是数字或字符

代码如下:

library(igraph)

# n = num of field devices
generate_hierarchy <- function(n=100, levels=3) {
  k <- c()
  for(i in 0:n) {
    curDevice <- paste("device", i)
    # For lower levels, generate 1-2 parent units
    for(j in 0:levels) {
      p = sample(1:2, 1)
      for(k in 0:p) {
        k <- c(k, c(curDevice, paste("unit", k, j)))
      }
    }
  }
  return(devices)
}



### Generate ###

field_devices <- 100
levels <- 2*log10(field_devices)

devices <- generate_hierarchy(field_devices, levels)
print(devices)

# Creeate basic graph
g <- graph(devices)
plot(g, vertex.color = "lightcoral", vertex.size = 40, edge.color='indianred4')
库(igraph)
#n=现场设备的数量

生成层次结构运行示例时出现的错误是

Error in generate_hierarchy(field_devices, levels) : 
  object 'devices' not found
如果将return语句更改为
return(k)
,则我可以无错误地运行代码,并可以看到绘图:

generate_hierarchy <- function(n=100, levels=3) {
  k <- c()
  for(i in 0:n) {
    curDevice <- paste("device", i)
    # For lower levels, generate 1-2 parent units
    for(j in 0:levels) {
      p = sample(1:2, 1)
      for(k in 0:p) {
        k <- c(k, c(curDevice, paste("unit", k, j)))
      }
    }
  }
  return(k)
}

field_devices <- 100
levels <- 2*log10(field_devices)

devices <- generate_hierarchy(field_devices, levels)
[enter image description here][1]
g <- graph(devices)
plot(g, vertex.color = "lightcoral", vertex.size = 40, edge.color='indianred4')

generate\u层次结构谢谢!我不知道我怎么没注意到:)有没有办法让它成为一个树结构?我将
k
重命名为设备,因为for循环中使用了
k
。因此,添加链接就变成了
设备
generate_hierarchy <- function(n=100, levels=3) {
  k <- c()
  for(i in 0:n) {
    curDevice <- paste("device", i)
    # For lower levels, generate 1-2 parent units
    for(j in 0:levels) {
      p = sample(1:2, 1)
      for(k in 0:p) {
        k <- c(k, c(curDevice, paste("unit", k, j)))
      }
    }
  }
  return(k)
}

field_devices <- 100
levels <- 2*log10(field_devices)

devices <- generate_hierarchy(field_devices, levels)
[enter image description here][1]
g <- graph(devices)
plot(g, vertex.color = "lightcoral", vertex.size = 40, edge.color='indianred4')