learnr教程使用chained setup chunks实现代码块间变量共享的问题
问题原因
exercise=TRUE标记的交互练习块本身不属于可被继承的setup块范畴,exercise.setup仅会识别不带exercise属性的普通R代码块作为预执行内容,你将c块的exercise.setup指向了作为交互练习的b块,自然无法读取b块内定义的变量。- 所有交互练习块的运行环境完全隔离,用户在b块内手动运行生成的变量仅存在于b块的独立环境中,不会同步到其他练习块的环境里。
解决方案
将需要跨练习共享的逻辑抽离为独立的非交互setup块,再按链式规则配置继承关系即可,修改后的示例代码如下:
--- title: "Tutorial" output: learnr::tutorial runtime: shiny_prerendered --- ```{r setup, include=FALSE} library(learnr)
x <- 2
抽离b块中需要共享的赋值逻辑为独立setup块,继承a块的配置
y <- 2 * x
b练习块的预执行指向b-base
y
c练习块的预执行指向b-base即可拿到y变量,多级继承可继续新增非交互setup块逐层配置
y
内容的提问来源于stack exchange,提问作者dobb798
相关产品推荐
相关产品推荐

