3

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

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

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

rlang::quo(MyFirstVar + MySecondVar) 

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

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

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

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

4

2 回答 2

1

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

而不是使用:

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

您可以使用:

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

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

于 2018-05-24T16:09:51.313 回答
1

lintr是一个包,可帮助您以一致的风格写作。如果您有正当理由说明为什么需要使用 camelCase 而不是 snake_case,我不会试图规避这一点。我绝对不会尝试通过更改代码来删除警告。这会降低它的可读性,而样式指南的目标是让代码更具可读性和一致性!

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

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

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

于 2018-05-23T08:49:46.777 回答