RStudio Cloud代码块可运行但Knitting时提示'filename'未找到求助
嘿,我刚遇到过几乎一模一样的问题!别担心,这不是你的tbl_df类型的锅,核心原因其实是RStudio Knit的时候会启动一个完全独立的R会话——它根本不会用到你全局环境里的任何对象,哪怕你在控制台里能看到filename,knit过程完全看不到它。这就是为什么单个代码块能跑(因为用了全局环境的对象),但整体knit就报错。
给你几个靠谱的解决步骤:
把数据加载逻辑直接放进Rmd文档:不要依赖全局环境的
filename,在你的Rmd里加一个代码块,专门用来读取数据生成filename,比如:# 放在文档开头的代码块里 library(tidyverse) filename <- read_csv("你的数据文件路径.csv") # 换成你实际的加载函数和路径这样knit的时候,这个代码块会先运行,创建出
filename,后面的代码就能正常调用它了。模拟Knit环境测试:先点击RStudio右上角的扫帚图标清空全局环境,然后在Rmd里按
Ctrl+Alt+R(或者点"Run All")运行所有代码块。如果这时候能正常运行,那knit大概率也没问题——这一步是提前模拟knit的独立环境,避免依赖全局变量。检查代码块的运行顺序和设置:确保加载
filename的代码块在所有用到它的代码块之前,而且代码块的eval参数没有设为FALSE(默认是TRUE,如果没改的话不用管)。如果是从外部脚本加载对象:要是
filename是从另一个R脚本生成的,你可以在Rmd里用source("你的脚本文件名.R")来运行那个脚本,这样filename会被创建在knit的会话里。不过还是更推荐直接在Rmd里写加载数据的代码,这样你的文档更自包含,别人看的时候也清楚数据来源。
放心,按这些步骤来,应该就能解决问题啦!
内容的提问来源于stack exchange,提问作者Pamela Osborne

