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

时间:2018-05-23 07:02:02

标签: r dplyr tidyverse rlang lintr

我一直在写一个R包并使用lintr来整理它。

我看到的一个问题是,我的data.frame列是从CSV中命名的,并且是大写的,例如MyVariableName。这超出了我的控制范围,输出的数据将需要遵循相同的风格。因此,我不想在导入时重命名它们,因为在从输入的数据中跟踪代码时会导致混淆。

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

rlang::quo(MyFirstVar + MySecondVar) 

我已尝试使用.data$来确定范围,但仍会收到警告:

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

我发现dplyr选择命令可以将列名引用为字符串 - 这样就可以解决一些警告。

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

2 个答案:

答案 0 :(得分:1)

lintr是一个帮助您以一致的风格书写的软件包。如果你有充分的理由说明为什么你需要使用camelCase而不是snake_case,我就不会试图绕过它。我绝对不会尝试通过更改您的代码来删除警告。这将使其可读性降低,并且样式指南的目标是使代码更具可读性和一致性!

然而,还有其他可能在linting时抑制警告。如果你看一下GitHub上的Readme.md,至少有两种可能性:

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

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

答案 1 :(得分:0)

嗯 - 不小心我似乎已经解决了我自己的答案。

而不是使用:

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

您可以使用:

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

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