【发布时间】:2013-12-24 16:10:21
【问题描述】:
我有一个以编程方式构建的字符串
tot=~item1+item2+item3+item4+item5+item6+item7+item8+item9+item10
我需要用两个单引号括起来(字符串上没有双引号)并分配给一个对象mod:
# this is what I want
mod <- '
tot=~item1+item2+item3+item4+item5+item6+item7+item8+item9+item10
'
我试过了:
string <- "tot=~item1+item2+item3+item4+item5+item6+item7+item8+item9+item10"
mod <- as.symbol(paste("'", string, "'", sep=" ")) # to try and remove the double quotes
但 mod 被包裹在 backtics 中
mod
`' tot=~item1+item2+item3+item4+item5+item6+item7+item8+item9+item10 '`
如果更多背景知识会有所帮助,请参阅我发布到help group of the package I am using 的更详细问题。我在 SO 上发布了一个更具体的问题,因为我已将问题范围缩小到 mod 对象的定义方式。
如果我使用cat() 和readLines(),它确实有效:
string <- paste("'", "tot=~item1+item2+item3+item4+item5+item6+item7+item8+item9+item10", "'", sep=" ")
cat(string, file=paste0(string, ".lav"))
mod <- readLines(paste0(string, ".lav"))
但我认为这没有必要。
【问题讨论】:
-
很抱歉 - 目前还不清楚您想要完成什么。您最后的代码与
mod <- string相同,只是非常复杂且容易出错。 -
我想要代码块中显示的内容,并带有注释“# this is what I want”。两个单引号之间的字符串是通过几个未显示的步骤构建的。我想获取那个字符串,用单引号括起来,然后将它分配给一个名为
mod的对象。带有“这就是我想要的”注释的代码块显示的是 lavaan 语法:lavaan.ugent.be/tutorial/syntax1.html -
就像我说的 - 这还不清楚。你所展示的是 - 再一次,当你说
mod <- string时你会得到什么(除了它在字符串内有额外的换行符)。单引号和双引号字符串之间没有区别:"foo" == 'foo'。我不知道为什么 lavaan 文档一直坚持使用单引号。他们错了,没关系。 -
lavaan实际上确实需要字符串。我认为@EricGreen 可能会对lavaan文档中的这一行感到困惑:A complete lavaan model syntax is simply a combination of these formula types, enclosed between single quotes.Eric,我认为 Konrad 是对的,您实际上不应该需要单引号(只有在您尝试创建字符串时才有意义嵌入双引号)。 -
@BenBolker,你是对的。我正在努力按照指示获得单引号,但似乎双引号还可以。
标签: r