微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

错误:在 RStudio 代码中找不到声明的对象

如何解决错误:在 RStudio 代码中找不到声明的对象

我是 R 的新手,我正在为一个大学项目工作,我尝试使用 setColor 函数根据另一个名为“cores”的列表为节点网络的节点着色,但是当我尝试运行时它会导致错误 “Error in setColor(i): object "cores" not found”,导致绘图未着色。

需要注意的是,它有时会运行,即使我没有更改代码中的任何内容

这是我写的代码

library(igraph)

g1<- graph(edges=c(1,131,1,123,114,2,67,65,3,47,17,4,120,181,81,5,153,33,21,6,126,89,7,78,159,8,178,147,107,79,9,35,80,10,187,192,11,75,70,86,48,12,22,39,190,140,13,175,191,14,169,185,54,15,166,84,59,88,16,50,92,165,18,161,177,94,19,63,171,144,20,24,30,25,45,23,112,195,34,99,43,134,26,105,27,64,28,95,29,113,31,116,32,173,122,55,150,36,132,85,155,37,38,66,103,196,40,44,133,41,117,197,42,164,172,118,46,76,90,184,136,101,49,141,158,183,51,121,52,69,56,53,152,61,57,137,58,60,72,62,170,97,130,68,135,188,179,162,193,119,71,111,149,109,176,73,182,74,110,146,77,129,186,82,145,83,157,100,124,87,128,91,93,96,98,194,127,102,104,163,168,106,108,151,148,160,115,139,198,174,125,180,143,189,138,142,199,156,154,167,200,173),directed=F )
  cores<- c(1,3
             )
  
  V(g1)
  setColor<-function(n)
  {
    if(cores[n] == 1)
    {
      return("green")}
    else if (cores[n] == 2){
      return("blue")
    } 
    else if (cores[n] == 3){
      return("orange")
    } 
    else if (cores[n] == 4){
      return("red")
    } 
    else if (cores[n] == 5){
      return("grey")
    } 
    else if (cores[n] == 6){
      return("black")
    } 
  }
  for(i in 1:200){
    V(g1)[i]$color <- setColor(i)
  }
plot(g1,vertex.size = 5,vertex.label=NA)
legend(x= "bottomleft",legend=c("Saudável com máscara","Saudavel sem mascara","Infectado com mascara","Infectado sem mascara"),fill = c("green","blue","orange","red"),pch=c(".",".","."),cex = 0.7)
  

解决方法

您应该使用 V(g1)$color[i] 而不是 V(g1)[i]$color,即

for (i in 1:200) {
  V(g1)$color[i] <- setColor(i)
}

你会得到

enter image description here


设置颜色的更有效方法是

V(g1)$color <- c("green","blue","orange","red","grep","black")[cores]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。