看起来 source/target 不是零索引的 networkd3

it looks like source/target is not zero indexed networkd3

我正在尝试使用网络流量数据制作交互式网站流量图。

使用 个包。

它只是一个 simpleNetwork,但是一直给我这个警告并强制关闭 RStudio。

library(networkD3)
simpleNetwork(data.frame(BWT2012$Visitors, 1:189157, fontSize = 16, nodeColour = "blue", nodeClickColour = "red", textColour = "black", opacity = 0.6, zoom = T))

Warning Message: It looks like Source/Target is not zero-indexed. This is required in Javascript and so your plot may not render.

我已经研究了几个小时,但似乎无法找到它是如何工作的。我知道 javascript 从 0 读取,r 从 1 读取。这就是它不起作用的原因。

  1. 任何人都很难帮助你,因为你没有提供可重现的例子,即我们不知道你的数据框BWT2012是什么样的

  2. 您的代码中似乎有一个错误...无论 BWT2012 是什么样子,data.frame(BWT2012$Visitors, 1:189157, fontSize = 16, nodeColour = "blue", nodeClickColour = "red", textColour = "black", opacity = 0.6, zoom = T) 都不起作用,因为您将元素传递给 data.frame 不同长度的函数。我怀疑你的意思是 simpleNetwork(data.frame(BWT2012$Visitors, 1:189157), fontSize = 16, nodeColour = "blue", nodeClickColour = "red", textColour = "black", opacity = 0.6, zoom = T),其中 simpleNetwork() 函数的第一个参数是一个完整的 data.frame(),第一个参数是 BWT2012$Visitors1:189157作为它的第二个参数,即你打算将第一个 column/variable 等于 BWT2012$Visitors 和第二列等于 1:189157[= 的数据框传递给 simpleNetwork() 函数28=]

  3. 假设上面的 #2 是正确的,你试图传递的数据框告诉 simpleNetwork BWT2012$Visitors 中的值是每个 link,1:189157中的值是每个link的目标。这似乎是一个不太可能发生的情况,所以我会确保你得到你认为你得到的东西。

  4. 您提到的警告只是一个警告...它不会停止 运行 的功能。在许多情况下(可能是自最近 发生变化以来的所有情况),它仍会绘制图形,尽管结果可能出乎意料。例如...

    Source <- c(1, 1, 2)
    Target <- c(2, 3, 3)
    NetworkData <- data.frame(Source, Target)
    simpleNetwork(NetworkData)
    
  5. 使用#4 中的示例,如果您想重新编号源 ID 和目标 ID,以便它们从 0 开始索引并避免出现警告,您可以...

    Source <- c(1, 1, 2)
    Target <- c(2, 3, 3)
    Source <- Source - 1
    Target <- Target - 1
    NetworkData <- data.frame(Source, Target)
    simpleNetwork(NetworkData)