2014-10-03 66 views
1

我在[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 

问题是什么?

+3

我能问你到底发生了什么吗? – joran 2014-10-03 20:37:16

+1

我们怎么可能知道,没有看到assign1.R中的代码? – digEmAll 2014-10-03 20:40:56

+7

所以你的代码反复调用自己?我认为这将是原因。 – stanekam 2014-10-03 20:42:08

回答

11

我没有得到确切做了同样的错误,但我能得到一个简单的例子非常相似的东西:

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

如上各国的意见之一,你的文件'重新采购正在尝试source()本身。

这是你将如何测试从R内这种可能性,而不只是打开一个文本编辑器文件(这是一个更明智的做法):

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

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

这感觉就像是你应该已经注意到了这个自己,但我无论如何回答,因为这个问题是delightfully recursive ...

+0

我想将其作为重复关闭,但它不在列表中 – baptiste 2014-10-03 23:07:28

+1

可能是因为这是重复自身的问题。 – 2014-10-03 23:57:44

+1

不幸的是,SO太聪明了,无法在自己的“链接”部分列出此问题... – 2014-10-04 00:05:34

1

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