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

如何在Quarto的ojs代码块中使用R代码块创建的dataframe?

在Quarto中直接传递R数据框到Observable代码块

完全可以实现,不需要导出CSV文件。Quarto提供了两种简洁的方式来即时传递R创建的数据框到ojs代码块:

方法1:在ojs中直接引用R对象

在Observable代码块里使用!r语法,直接引用R代码块中定义的对象。Quarto会自动将R对象序列化为JSON并传递给Observable运行时。

示例:

df = data.frame(
  x = 1:10,
  y = 2:11
)
// 获取R中的df数据框
const df = !r df;

// 验证数据(可选)
console.log(df);

// 示例:用Plot绘制散点图
Plot.plot({
  marks: [
    Plot.dot(df, {x: "x", y: "y"})
  ]
})

方法2:用R主动定义ojs环境变量

在R代码块中使用quarto::ojs_define()函数,将数据框主动注入到Observable的运行环境中,之后在ojs代码块里可以直接使用该变量。

示例:

df = data.frame(
  x = 1:10,
  y = 2:11
)
# 将df传递到ojs环境
quarto::ojs_define(df = df)
// 直接使用已传递的df
console.log(df);

// 可视化示例
Plot.plot({
  marks: [
    Plot.line(df, {x: "x", y: "y", stroke: "steelblue"})
  ]
})

这两种方式都是即时处理(on the fly),不需要生成中间CSV文件,能高效实现R与Observable的数据互通。

内容的提问来源于stack exchange,提问作者Lenn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 16:45:44