You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 15:07:05