700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > R语言rmarkdown knit导出的时候显示Error in eval找不到对象

R语言rmarkdown knit导出的时候显示Error in eval找不到对象

时间:2024-02-17 12:31:57

相关推荐

R语言rmarkdown knit导出的时候显示Error in eval找不到对象

Rmarkdown运行时可以正常运行,但是使用Knit导出Word时报错:

Error

in eva1(expr ,envir,enc1os) :找不到对象'user'

这是因为当执行Knit命令时,R会把Rmarkdown里面的代码重新执行一遍,而且

不会使用R Workspace(也就是RStudio右上角的Envirnoment里面的那些自定义变量)里面之前已经生成的自定义变量。

因此有时Rmarkdown可以运行是因为运行需要的变量在Envirnoment里面有,但是Knit的时候他找不到这个变量,就会报错。

例如有如下代码:

a <- 1print(a)

运行和Knit都没问题。但是如果把第一行的变量定义注释掉:

# a <- 1print(a)

现在定义变量的部分注释掉,依然可以运行,因为R语言在运行结束后不会删除产生的自定义变量,a已经在变量区了。但是Knit不行,因为他发现a没有定义过,他也不去找变量区,直接给你报错。那Knit过程中的中间变量都放在哪里了?我不知道,可能Knit过程中有自己的变量区,总之和RStudio的变量区不重合。

因此出现这个问题就是你没有在代码里面明确定义报错里面那个变量,把定义的代码加进去就OK了。

在附加一个在Knit之前排除这个问题的方法:在命令行输入以下代码并逐行运行

rm(list = ls())gc()

这两段代码就是把变量区缓存的变量都清除,这样运行和Knit就等价了,因为都没有之前存在变量区的变量可以用。如果没有报对象找不到的错误,再Knit也不会报对象找不到的错误。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。