我一直在写一个R包并使用lintr
来整理它。
我看到的一个问题是,我的data.frame
列是从CSV中命名的,并且是大写的,例如MyVariableName
。这超出了我的控制范围,输出的数据将需要遵循相同的风格。因此,我不想在导入时重命名它们,因为在从输入的数据中跟踪代码时会导致混淆。
我正在使用tidyverse
和NSE。我也倾向于在代码中使用大量的准引用内容(我从构建块中构建分析,即定义包含以下内容的列表:
rlang::quo(MyFirstVar + MySecondVar)
我已尝试使用.data$
来确定范围,但仍会收到警告:
rlang::quo(.data$MyFirstVar + .data$MySecondVar)
我发现dplyr
选择命令可以将列名引用为字符串 - 这样就可以解决一些警告。
有没有办法抑制有关数据框列名的警告?
答案 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"]])
(当然,如果你的列名未知,你也可以用变量替换字符串......)