R代码在RStudio运行正常但Knit实验报告提示total未找到报错求助
问题核心原因
Knit渲染Rmd文件时会启动独立的干净R会话,和你当前RStudio交互环境的已加载包、已定义变量完全隔离,所有在交互环境生效的操作如果没有写进Rmd文件的代码块里,Knit时都会失效。你遇到的报错就是这个特性导致的,同时你的代码写法也存在不规范的问题:
- 最初的
mutate操作没有将结果赋值回arbuthnot对象,仅做了临时计算,后续ggplot调用的还是原数据集,自然没有boy_ratio字段 - 你单独定义的
total是全局环境变量,mutate运算时默认优先查找数据框内部的列,找不到才会去全局找,就算临时生效也不属于数据集的一部分,后续调用还是会出问题 - 大概率你没有在Rmd文件的代码块中显式加载依赖包,也没有显式加载
arbuthnot数据集,交互环境下你提前加载过不会报错,但Knit的干净环境里找不到对应的函数和数据
正确实现代码
你可以直接把对应代码块替换为以下内容:
# 显式加载依赖包,确保Knit环境能识别对应函数 library(tidyverse) library(openintro) # 加载练习数据集 data(arbuthnot) # 把total、boy_ratio都作为列存入数据集,不使用全局变量 arbuthnot <- arbuthnot %>% mutate( total = boys + girls, boy_ratio = boys / total ) # 绘制折线图 ggplot(data = arbuthnot, aes(x = year, y = boy_ratio)) + geom_line()
排查验证步骤
替换后先点击代码块右上角的运行按钮,确认当前块运行无报错、图表正常生成,再逐次运行前面的所有代码块,确认全流程无报错后再尝试Knit即可。
内容的提问来源于stack exchange,提问作者Grifindor
相关产品推荐
相关产品推荐

