gpt4 book ai didi

r - 为什么替换将 noquote 文本更改为 R 中的字符串?

转载 作者:行者123 更新时间:2023-12-03 22:18:47 24 4
gpt4 key购买 nike

我想回答一个关于 plotmath 的问题但我没有得到我想要的substitute输出。
我想要的输出:paste("Hi", paste(italic(yes),"why not?"))我得到了什么:paste("Hi", "paste(italic(yes),\"why not?\")")

text<-'paste(italic(yes),"why not?")'
text
[1] "paste(italic(yes),\"why not?\")"
noqoute_text<-noquote(text)
noqoute_text
[1] paste(italic(yes),"why not?")
sub<-substitute(paste("Hi",noqoute_text),
env=list(noqoute_text=noqoute_text))
sub
paste("Hi", "paste(italic(yes),\"why not?\")")

最佳答案

您使用了错误的功能,请使用 parse而不是 noquote :

text<-'paste(italic(yes),"why not?")'
noquote_text <- parse(text=text)[[1]]

sub<- substitute(paste("Hi",noquote_text),env=list(noquote_text= noquote_text))
# paste("Hi", paste(italic(yes), "why not?"))
noquote只需应用 classcharacter 类型的对象, 带有特定的 print方法不显示引号。
str(noquote("a"))
Class 'noquote' chr "a"
unclass(noquote("a"))
[1] "a"

Would you please elaborate on your answer?



在 R 中,您应该注意对象中的内容与打印的内容之间的区别。

什么 noquote是:
  • 添加 "noquote"对象的类属性
  • 就是这样

  • 代码是:
    function (obj) 
    {
    if (!inherits(obj, "noquote"))
    class(obj) <- c(attr(obj, "class"), "noquote")
    obj
    }

    然后当你打印它时,方法 print.noquote :
  • 删除类 "noquote"来自对象(如果存在)
  • 来电print带有参数 quote = FALSE
  • 就是这样

  • 您实际上可以调用 print.noquote也在一个字符串上:
    print.noquote("a")
    [1] a

    它的打印方式与 quote(a) 类似。或 substitute(a)会,但它是一个完全不同的野兽。

    在您尝试的代码中,您一直在替换字符串而不是调用。

    关于r - 为什么替换将 noquote 文本更改为 R 中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52026127/

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