gpt4 book ai didi

r - Knitr:显示内联代码块的源代码

转载 作者:行者123 更新时间:2023-12-04 19:29:57 27 4
gpt4 key购买 nike

例如,在编写演讲幻灯片时,我们经常会遇到这样一种情况,我们希望内联代码输出为 source code = result。 .所以例如

"foofoofoo qt(p = 0.95, df = 24) = 1.710882 barbarbar"

但是 \Sexpr{qt(p = 0.95, df = 24)}仅提供该输出的第二部分。一些解决方法之一是
\Sexpr{highr::hi_latex('qt(p = 0.95, df = 24)')} $=$ \Sexpr{qt(p = 0.95, df = 24)} 

使用起来有点不舒服。

问题1:还有其他解决方案吗?

问题二:

内联钩子(Hook)只允许我们改变评估结果的格式(所以上面的 1.710882 应该如何显示)。

能不能把源代码放在 \Sexpr{}可作为内联钩子(Hook)内的一个选项?然后我可以轻松地将内联输出定义为 source = result .

最佳答案

我想通过修改钩子(Hook)可以实现你想要的,但仅仅修改内联钩子(Hook)是不够的,因为传递给内联钩子(Hook)的唯一参数已经是评估结果,没有任何其他参数。而且修改很多钩子(Hook)风险太大,不值得。这是一些不费吹灰之力就能实现你想要的东西。例如,您可以定义以下函数 s在您的 knitr 设置 block 中:

s <- function(x){
paste0(deparse(substitute(x)), " = ", x)
}

然后你可以使用 r s(qt(p = 0.95, df = 24)) 之类的东西或 \Sexpr{s(qt(p = 0.95, df = 24))}得到你想要的结果。

编辑:更复杂的方法可能是:
s <- function(x){
paste0(deparse(substitute(x)), " = ", knitr::knit_hooks$get("inline")(x))
}

这个版本的 s将给你的四舍五入的数字结果,就像默认的内联钩子(Hook)一样。

编辑:感谢@user2554330,我更改了 deparse(sys.call()[[2]]deparse(substitute(x))遵循更常见的 R 习语。

关于r - Knitr:显示内联代码块的源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44751419/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com