我在我的Markdown文件中收到错误,我正在使用RStudio中的knitr进行编译。我不确定这个'错误'应该指导。它似乎不是一个' R'每个人说错误。
如果我使用以下YAML标题内容创建一个R markdown文档,我可以编辑该文件:
FALSE
但是,如果我只是将format语句中的单引号更改为双引号(这是我最初使用的那样),
---
title: "Eye tracking AOI plots"
author: "Steven Vannoy"
date: "`r format(Sys.time(), '%I:%M')`"
output: html_document
---
我收到以下运行时错误:
---
title: "Eye tracking AOI plots"
author: "Steven Vannoy"
date: "`r format(Sys.time(), "%I:%M")`"
output: html_document
---
我进行了充分的实验,知道这是结肠':'导致问题的原因是,如果您使用"%A%d"例如。
我在周围搜索并发现了一些断言,单引号和双引号在R中通常是等价的,尽管你不能将双引号与单引号配对并让它像两个双引号一样。
显然我有一个可以完成我需要做的工作代码示例,但我通常使用双引号,并且想知道我何时应该知道何时应该使用单引号?
答案 0 :(得分:12)
单引号和双引号在R中通常是等价的(就像它们在Python中一样)是无关紧要的,解析问题发生在YAML级别上。
您不需要在YAML中引用标量,但如果您这样做,则需要知道double quoted style scalars("
)需要转义:
这是唯一能够通过使用“\”转义序列表达任意字符串的样式。这是以逃避“\”和“”字符为代价的。
因此,如果您想在双引号内使用双引号,则必须执行以下操作:
---
title: "Eye tracking AOI plots"
author: "Steven Vannoy"
date: "`r format(Sys.time(), \"%I:%M\")`"
output: html_document
---
SabDeM的解决方案也有效,因为标量中没有单引号
`r format(Sys.time(), "%I:%M")`
单引号样式标量但只能表示仅包含可打印字符的字符串。
Scalars通常根本不需要在YAML中引用,因为您已经使用了键(title
,author
等)。但是简单的样式标量不能以反引号开头。我会将plain style用于除date
键的值以外的所有标量,并使用literal style(仅限于{}),以使IMO更具可读性:
---
title: Eye tracking AOI plots
author: Steven Vannoy
date: |-
`r format(Sys.time(), "%I:%M")`
output: html_document
---
这与你的YAML完全相同。
答案 1 :(得分:1)
正如我在评论中所说,问题是knitr不知道如何解析嵌套符号,或者问题可能与引用“你需要 // Create an instance of the DocumentClient.
using (dbClient = new DocumentClient(new Uri(Properties.Settings.Default.EndpointUrl), Properties.Settings.Default.AuthorizationKey))
{
Database database = dbClient.CreateDatabaseQuery().Where
(db => db.Id == Properties.Settings.Default.databaseID).AsEnumerable().FirstOrDefault();
DocumentCollection collection = dbClient.CreateDocumentCollectionQuery(database.SelfLink).Where
(c => c.Id == Properties.Settings.Default.collectionID).ToArray().FirstOrDefault();
// If database type is not null then continue to range index the collection
if (collection != null)
{
stopsCollection.IndexingPolicy.IncludedPaths.Add(
new IncludedPath
{
Path = "/*",
Indexes = new System.Collections.ObjectModel.Collection<Index>
{
new RangeIndex(DataType.String) {Precision = 6},
new RangeIndex(DataType.Number) {Precision = 6}
}
}
);
}
else
{
Console.WriteLine(">> Unable to retrieve requested collection.");
}
}
的事实有关,反之亦然。这段代码有效,并对后一假设给予了加分:
"