【问题标题】:Generate a list of expression literals from an integer sequence从整数序列生成表达式文字列表
【发布时间】:2012-04-19 23:58:44
【问题描述】:

我想将整数序列映射到表达式文字序列,以便将后者用作绘图中的刻度线标签,例如

lbls <- lapply(-2:2, function(i) expression(i * pi))
plot(...)
axis(1, at=seq(-2,2)*pi, labels=lbls)

到目前为止,我已经尝试了所有我能想到的bquotesubstituteexpression 等变体,但显然我一定错过了一些东西。 此外,FAQ 和相关的 SO 问题和答案并没有为我完全解决这个问题。

我该如何正确地做到这一点(我希望axispi 呈现为希腊字母,并在上面的示例中将-2 ... 2 替换为i)?

【问题讨论】:

    标签: r plot expression


    【解决方案1】:

    试试这个:

    lbls <- do.call("expression", lapply(-2:2, function(i) substitute(X * pi, list(X = i))))
    plot(-10:10, -10:10, xaxt="n")
    axis(1, at=seq(-2,2)*pi, labels=lbls)
    

    【讨论】:

    • 谢谢@Roman 或者,使用bquote,你可以这样写:lbls &lt;- do.call("expression", lapply(-2:2, function(i) bquote(.(i) * pi)))
    【解决方案2】:

    试试这个:

    lbls <- parse(text = paste(seq(-2, 2), "pi", sep = "*"))
    

    【讨论】:

    • 不错的一个!我一定是忽略了?parse 中的text 参数。
    • 这个建议对列表中表情差异较大的人更有帮助。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    相关资源
    最近更新 更多