概述
Rmarkdown运行时可以正常运行,但是使用Knit导出Word时报错:
Error
in eva1(expr ,envir,enc1os) :找不到对象'user'
这是因为当执行Knit命令时,R会把Rmarkdown里面的代码重新执行一遍,而且
不会使用R Workspace(也就是RStudio右上角的Envirnoment里面的那些自定义变量)里面之前已经生成的自定义变量。
因此有时Rmarkdown可以运行是因为运行需要的变量在Envirnoment里面有,但是Knit的时候他找不到这个变量,就会报错。
例如有如下代码:
a <- 1
print(a)
运行和Knit都没问题。但是如果把第一行的变量定义注释掉:
# a <- 1
print(a)
现在定义变量的部分注释掉,依然可以运行,因为R语言在运行结束后不会删除产生的自定义变量,a已经在变量区了。但是Knit不行,因为他发现a没有定义过,他也不去找变量区,直接给你报错。那Knit过程中的中间变量都放在哪里了?我不知道,可能Knit过程中有自己的变量区,总之和RStudio的变量区不重合。
因此出现这个问题就是你没有在代码里面明确定义报错里面那个变量,把定义的代码加进去就OK了。
在附加一个在Knit之前排除这个问题的方法:在命令行输入以下代码并逐行运行
rm(list = ls())
gc()
这两段代码就是把变量区缓存的变量都清除,这样运行和Knit就等价了,因为都没有之前存在变量区的变量可以用。如果没有报对象找不到的错误,再Knit也不会报对象找不到的错误。
最后
以上就是怕孤单万宝路为你收集整理的R语言rmarkdown knit导出的时候显示Error in eval找不到对象的全部内容,希望文章能够帮你解决R语言rmarkdown knit导出的时候显示Error in eval找不到对象所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复