Quarto中OJS与R代码块集成:OJS变量转R对象方法问询
在Quarto中把OJS交互变量传入R代码块
要把OJS里的交互输入变量传给后续的R代码块,直接用Quarto内置的ojs_get()函数就能实现,无需额外插件。具体操作如下:
1. 保留原有OJS交互代码
先保留你已经写好的OJS代码块,定义交互式输入:
viewof range = Inputs.range([0, 100], {label: "Amount", step: 1}) viewof select = Inputs.select(["A", "B"], {label: "Select one"})
2. 在R代码块中获取OJS变量
在后续的R代码块里,调用ojs_get()并传入OJS变量名,就能把OJS的输入值转换成R对象使用:
# 获取OJS中的range数值 range_val <- ojs_get("range") # 获取OJS中的select选项 select_val <- ojs_get("select") # 测试输出获取到的值 cat("当前选择的数值:", range_val, "\n") cat("当前选择的选项:", select_val, "\n")
3. 完整联动示例
可以用获取到的变量做实时计算或可视化,比如:
# 根据OJS输入生成对应数据 df <- data.frame( group = rep(select_val, 5), value = rnorm(5, mean = range_val, sd = 10) ) # 绘制实时更新的箱线图 library(ggplot2) ggplot(df, aes(x = group, y = value)) + geom_boxplot(fill = "#4287f5") + ggtitle(paste("基于输入数值", range_val, "生成的数据"))
注意事项
- 仅支持Quarto的HTML输出格式(OJS交互功能无法在PDF、Word等静态格式中生效)
ojs_get()的参数要和OJS中viewof定义的变量名完全一致,不需要加viewof前缀- 用户调整OJS交互控件时,R代码块会自动重新运行,实现实时联动
内容的提问来源于stack exchange,提问作者Saikat
相关产品推荐
相关产品推荐

