【问题标题】:source() doesn't work ("node stack overflow")source() 不起作用(“节点堆栈溢出”)
【发布时间】:2020-05-12 23:31:08
【问题描述】:

我的 R 脚本中有以下几行代码,名为 assign1.R

(u <- c(1, 1, 0, 1, 0)) # a)
u[3] # b)
ones_u <- which(u == 1) # c)
ones_u
source("assign1.R")

只是,source() 函数不起作用。 R 向我显示以下错误消息:

Error in match(x, table, nomatch = 0L) : node stack overflow
Error during wrapup: node stack overflow

有什么问题?

【问题讨论】:

  • 我能问一下你到底希望发生什么吗?
  • 不看assign1.R中的代码我们怎么可能知道?
  • 所以你的代码反复调用自己?我想这就是原因。

标签: r


【解决方案1】:

我没有得到完全与你相同的错误,但我能够通过一个简单的例子得到非常相似的东西:

writeLines("source('badsource.R')",con="badsource.R")
source("badsource.R")
## Error in guess(ll) : node stack overflow

作为上述 cmets 之一,您正在采购的文件正在尝试 source() 本身。

这是您在 R 中测试这种可能性的方法,而无需在文本编辑器中打开文件(这是一种更明智的方法):

grepl("source('badsource.R')",readLines("badsource.R"),fixed=TRUE)  ## TRUE

(显然你应该在这里填写你的作业文件的名称......)

感觉你应该自己也注意到了,但我还是要回答,因为问题是delightfully recursive ...

【讨论】:

【解决方案2】:

您正在获取您所在的文件。应该删除该 source() 代码行。如果您从另一个 R 文件中获取一些代码,那么您将使用 source() 函数,否则无需获取另一个文件。此外,如果所有代码都在一个文件中运行,而没有在其他文件中运行其他代码位,则很可能您已经拥有所需的代码,并且不需要获取另一个文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2016-06-13
    • 2019-05-18
    • 1970-01-01
    • 2020-10-23
    • 2012-04-15
    • 2012-12-20
    相关资源
    最近更新 更多