在 RStudio 片段中使用 $ 符号而不将 $ 符号评估为变量创建者

Using a $ symbol within RStudio snippets without the $ sign being evaluated as a variable creator

在以下情况下,当我在 RStudio 中创建 R 代码段时,代码段变量中的 $ 符号会在我希望文字 $ 符号出现以供在我的代码段中使用时产生问题(例如,mtcars$cyl):

snippet cor_binary
    ltm::biserial.cor(${1:df}$ ${2:continuous_field}, ${1:df}$ ${3:binary_field}, use = c("complete.obs"), level = 2)

上面的代码片段在 dffield 之间产生了不需要的白色 space:

# output
ltm::biserial.cor(df$ continuous_field, df$ binary_field, use = c("complete.obs"), level = 2)

我的代码片段中的 space 不会在输出中产生不同的问题:

snippet cor_binary
    ltm::biserial.cor(${1:df}$${2:continuous_field}, ${1:df}$${3:binary_field}, use = c("complete.obs"), level = 2)

# output
ltm::biserial.cor(df\{2:continuous_field}, df\{3:binary_field}, use = c("complete.obs"), level = 2)

如何在没有代码段的情况下在 mtcars$cyl 的上下文中包含 $ 符号

使用反引号:

data.table::data.table(`a$b` = 1)
   a$b
1:   1

推荐的方法是使用 [[ 而不是 $:

snippet test
    ${1:df}[["${2:abc}"]]

解析为:

df[["abc"]]

如果必须使用 $ 这里有一个 hacky 的方法来让它工作,它利用了片段可以 运行 使用 `r ... ` 编码的事实,它可以用来打印一个转义的 $ 和第二个变量之间的零宽度元素。不过,这可能不应该被依赖。

snippet test2
    ${1:df}$`r ""`${2:abc}

解析为:

df$abc