

我刚刚在 vscode 中设置了 R 来与 Jupyter 笔记本一起使用,但它用红色标记了我的内核的第一个字符串。
我收到的消息是:
Failed to run diagnostics: ! error in callr subprocess
Caused by error:
! Full file exclusions must be character vectors of length 1. items: 1 are not! lintr
Run Code Online (Sandbox Code Playgroud)
如果我卸载 languageserver 软件包,它就会消失,但 vscode 要求我重新安装它,然后它又回来了,我该如何摆脱它?
我的包中的这个测试与devtools::test(). 在线 Travis 构建也进展顺利。
test_that("Package style", {
lintr::expect_lint_free()
})
Run Code Online (Sandbox Code Playgroud)
然而,devtools::check()它失败了。错误信息是
invalid 'path' argument
Backtrace:
1. lintr::expect_lint_free()
2. lintr::lint_package(...)
3. base::normalizePath(path, mustWork = FALSE)
4. base::path.expand(path)
Run Code Online (Sandbox Code Playgroud)
我在 Windows 上运行 R 版本 3.6.3 (2020-02-29)、testthat 2.3.2 和 lintr 2.0.1。
我认为问题是 lintr 不知道要 lintr 哪个文件。
有人可以向我指出这个问题的解决方案是什么吗?
Jim Hester 的“lintr”包包含许多不同的 R linter。该包的README以这种方式描述了其中一个linter :
undesirable_function_linter:报告不受欢迎的功能的使用,例如选项或 sapply 并提出替代方案。
我很惊讶。我一直在使用的R用很多年了,我一直在使用options(),并sapply()多年。是什么让他们不受欢迎?还有更好的选择吗?
我知道getOption(),但它不能代替options()。我还了解*apply()变体Map()、 和 Tidyversemap函数。总体而言,Tidyverse 函数对我来说似乎比sapply()or Map()- 我更喜欢 Tidyverse 函数中的默认值和参数顺序 - 但我不会想到称之为sapply()“不受欢迎”。
我正在 VS Code 中使用 R,使用R Extension。我几乎所有的项目工作都使用Targets来完成,这意味着我的包导入和函数通常位于单独的文件中。
\n一个简单的例子是在一个如下所示的文件夹中工作
\nproject\n\xe2\x94\x82 packages.R\n\xe2\x94\x82 README.md\n\xe2\x94\x82 _targets.R\n\xe2\x94\x82\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80R\n\xe2\x94\x82 functions.R\nRun Code Online (Sandbox Code Playgroud)\n我遇到的问题是,我从 {lintr} 收到有关从packages.R(或从tar_option_set(packages=c(...)))加载的函数(esp 特殊)的全局函数定义的警告。我有一个类似的问题,lintr 无法识别列名,而是将它们视为丢失的变量。例如,中的函数functions.R可能如下所示:
如果我正在开发一个包,解决方案(如此处和其他地方发布的)将是将函数包含在命名空间中。但我不认为每个快速分析都需要一个包。我还能如何避免这些警告?是排除这些短绒的唯一其他选择吗/.lintr?
我试图通过lintr在编写 R 代码时使用该包来帮助我们的开发人员组获得类似的代码风格。为了自动化这一步,如果代码中有任何错误(错误的样式),我希望我们的构建失败。如果这很重要,我们将使用 Jenkins 作为我们的构建管道。
我知道我们可以使用该expect_lint_free功能,但我们不制作包,只制作脚本文件。该lint函数的输出看起来不错,但即使 linter 返回改进建议,构建也会通过。我如何获得非零退出状态,这将使 Jenkins 构建失败?
在命令行上运行的(简化的)代码
Rscript -e "lintr::lint('my_script.R')"
Run Code Online (Sandbox Code Playgroud)
没有返回错误,但有很多建议。
注意:我目前对“创建 R 包”解决方案不感兴趣。