Lintr - 有没有办法抑制大写数据框列名称警告?

Lintr - is there a way to suppress capitalised data frame column name warnings?

我一直在编写 R 程序包并使用 lintr 对其进行样式整理。

我经常看到的一个问题是我的 data.frame 列是从 CSV 命名的并且是大写的,例如MyVariableName。这是我无法控制的,输出的数据需要遵循相同的样式。因此我不想在导入时重命名它们,因为在遵循输入数据的代码时会导致混淆。

我正在使用 tidyverse 和 NSE。我也倾向于在代码中使用大量类似引用的东西(我从引用的构建块中构建分析,即定义包含的列表:

rlang::quo(MyFirstVar + MySecondVar) 

我已经尝试使用 .data$ 来确定它们的范围,但仍然收到警告:

rlang::quo(.data$MyFirstVar + .data$MySecondVar) 

我发现对于 dplyr select 命令,您可以将列名作为字符串引用 - 这样可以解决一些警告。

有没有办法抑制有关数据框列名称的警告?

lintr是一个帮助你写出风格一致的包。如果您有充分的理由说明为什么需要使用驼峰命名法而不是 snake_case,我不会尝试规避它。我绝对不会尝试通过更改代码来删除警告。这会降低它的可读性,风格指南的目标是让代码更具可读性和一致性!

然而,还有其他方法可以在 linting 时抑制警告。如果你看看GitHub处的Readme.md,至少有两种可能:

  • 您可以在每个违规行后附加 # nolint 或在整个代码块后附加 # nolint start# nolint end
  • 您可以在项目根目录中创建一个配置文件 (.lint) 并更改默认的 linters。

根据您在检查代码时调用 lintr 的方式,可能还有其他选项。

嗯 - 偶然我似乎已经解决了我自己的答案。

而不是使用:

rlang::quo(.data$MyFirstVar + .data$MySecondVar)

您可以使用:

rlang::quo(.data[["MyFirstVar"]] + .data[["MySecondVar"]])

(当然,如果您的列名未知,您也可以用变量替换字符串...)