【问题标题】:R: Error in sample.int(length(x), size, replace, prob) : invalid first argument in a 20 iteration code that seems to occur for no apparent reason?R: sample.int(length(x), size, replace, prob) 中的错误:20 次迭代代码中的第一个参数无效,似乎没有明显的原因发生?
【发布时间】:2017-11-28 02:23:32
【问题描述】:

虽然我查看了其他讨论类似错误的帖子,但它们与我当前的问题不符。

我目前正在运行一个包含如下代码的模拟:

    g <- add_edges(g, c(sample(V(g)[V(g)$d == 1], 1), sample(V(g)[V(g)$a == 0], 1)))

但是,每当我运行此代码时,我总是会遇到问题。我总是收到一条错误消息:

 Error in sample.int(length(x), size, replace, prob) : invalid first argument

并且可能由于第一个错误,我的数据框不包含任何值我在这段代码中做错了什么,因为我确定我在这段代码中的任何时候都没有使用 sample.int?我假设问题源于这段代码,因为这是我使用代码 sample() 的唯一一点,删除它也会导致错误停止。

【问题讨论】:

  • 这远远超出了必要的信息。您是否通过逐行和逐个案例逐步执行代码来确定错误发生在哪里?如果没有,我会从那里开始。您可能会发现没有人会为您调试大型脚本而烦恼。
  • 我已将错误识别为一行代码,该代码在整个代码中出现 3 次,每次迭代运行一次,并相应地更改了我的初始帖子。
  • 我猜,我认为问题出在sample() 调用之一,它派发到sample.int。由于您有一个“无效的第一个参数”错误,我建议您查看V(g)[V(g)$d == 1]V(g)[V(g)$a == 0] 的结果,看看其中任何一个是否没有返回任何内容。即,我可以通过执行 sample(integer(0),10) 来复制错误
  • 它们都返回各自的节点。
  • 我相信在我的案例中这个错误的原因与包“tidyverse”有关。一旦我删除它,错误就会停止出现。

标签: r igraph tidyverse


【解决方案1】:

我浏览了您在此处发布的旧版本中提供的代码:

https://stackoverflow.com/posts/47522942/revisions

它有时会越界,有时则不会。我看到的是有一个非零概率值:

V(g)$d == 1

返回一个完全错误的数组。这意味着价值

V(g)[V(g)$d == 1]

将是一个空的igraph.vs 对象,这会产生错误。仔细观察一切:

V(g)[TRUE]
+ 30/30 vertices, from b785c8d:
[1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
[24] 24 25 26 27 28 29 30

在上述情况下,我们将有 30 个值可供采样,而如果我们在整个 FALSE 数组上进行子集化,我们将没有可供采样的值:

V(g)[FALSE]
+ 0/30 vertices, from b785c8d:

而且这些igraphs.vs对象的长度分别是30和0。

length(V(g)[TRUE])
30

length(V(g)[FALSE])
0

那么为什么会出现sample.int 错误?

查看sample 的源代码,我们可以看到给定一个类似对象x 的数组,sample 将只返回数组的一个子集,通过在@987654335 上执行sample.int 来获取该子集@:

 x[sample.int(length(x), size, replace, prob)]

要查看您得到的错误来自哪里,我们只需要看看如果我们尝试执行 sample.int(0, 1) 会发生什么:

Error in sample.int(0, 1) : invalid first argument

因此,要解决您的问题,您需要确保有时没有长度为 0 的对象,或者在这种情况下需要处理如何处理。

【讨论】:

    猜你喜欢
    • 2015-03-28
    • 2018-12-05
    • 2016-06-19
    • 2022-11-02
    • 2014-08-05
    • 1970-01-01
    • 1970-01-01
    • 2016-05-30
    相关资源
    最近更新 更多