我想回答一个关于plotmath的问题但是我没有得到我想要的替代输出.我想要的输出:plotmath
我得到了什么:substitute
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?\")")
Run Code Online (Sandbox Code Playgroud)
Moo*_*per 12
你使用了错误的功能,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?"))
Run Code Online (Sandbox Code Playgroud)
noquote
只是将类应用于character类型的对象,使用特定的打印方法不显示引号.
str(noquote("a"))
Class 'noquote' chr "a"
unclass(noquote("a"))
[1] "a"
Run Code Online (Sandbox Code Playgroud)
你能详细说明你的答案吗?
在R中,你应该小心对象中的内容与打印的内容之间的区别.
这class
是什么:
character
到对象的class属性代码是:
function (obj)
{
if (!inherits(obj, "noquote"))
class(obj) <- c(attr(obj, "class"), "noquote")
obj
}
Run Code Online (Sandbox Code Playgroud)
然后当你打印它时,方法print
:
noquote
如果它在那里,则从对象中删除该类"noquote"
的说法print.noquote
你也可以实际调用"noquote"
一个字符串:
print.noquote("a")
[1] a
Run Code Online (Sandbox Code Playgroud)
它以类似的方式打印的print
或者quote = FALSE
会,但它是一个完全不同的野兽.
在您尝试的代码中,您一直在替换字符串而不是调用.
归档时间: |
|
查看次数: |
408 次 |
最近记录: |