8

我已经更新到 R4.0.0和 RStudio 版本1.2.5042

我正在开发一个包,我经常使用以下工作流程:

  1. --with-keep.source通过单击“安装和重新启动”按钮(包括R CMD INSTALL 选项)从 RStudio 中构建包。
  2. .R在我要调试的函数的文件中设置断点。
  3. 调用该函数并等待调试器在我设置断点的位置准确停止。

这曾经很好地工作。但是,现在,我总是得到:

调试位置是近似的,因为源不可用

这很烦人,因为我仍然可以调试,但我不再使用实际功能了。

任何提示/想法为什么会这样?

编辑 (11.05.2020)

这似乎是 RStudio 和 R 4.0.0 的问题。这就是我这么认为的原因。我使用了另一台运行 Windows 10 的机器并执行了以下步骤(按此顺序;Windows 用户应该可以重现)。一开始我安装了 R 3.6.1 和 RStudio 1.2.5042(在撰写本文时 1.2.5042 是当前版本;也尝试使用 RStudio 的预览版 1.3.957)。

  1. 克隆我正在从 Github 开发的包:

    git clone "https://github.com/M-E-Rademaker/cSEM"
    
  2. 转到包根目录并打开cSEM.Rproj

  3. 运行devtools::install_github("M-E-Rademaker/cSEM")自动安装包并下载所有cSEM依赖的包。
  4. 在 RStudio 中:点击“ Build”安装和“ Install and Restart
  5. 现在导航到源文件。例如:R/00_csem.R并在例如第 321 行设置断点。
  6. 现在运行以下代码:

    model <- "
    # Structural model
    eta2 ~ eta1
    eta3 ~ eta1 + eta2
    
    # Measurement
    eta1 =~ y11 + y12 + y13
    eta2 =~ y21 + y22 + y23
    eta3 =~ y31 + y32 + y33
    "
    
    res <- csem(threecommonfactors, model)
    

    调试器应该启动并将您带到第 321 行。您应该能够更改代码,并且您不应该收到debug-location-is-approximate-because-the-source-is-not-availabe”警告如果您是在低于 4.0.0 的 R 版本上。

  7. 转到R/00_csem.R并删除第 321 行中的断点
  8. 关闭 Rstudio 并将 R 更新为 4.0.0(使用 eg installr::updateR()
  9. 重要提示:还获取最新版本的 Rtools 并按照网站上有关您需要将 rtools 添加到 PATH 的部分的步骤进行操作。https://cran.r-project.org/bin/windows/Rtools/
  10. 由于您需要重新安装所有软件包:cSEM.Rproj再次打开;跑install.packages("devtools")
  11. 现在重复步骤 3、4、5 和 6。
  12. 调试器应该再次在第 321 行停止,但是,这次您确实收到了“debug-location-is-approximate-because-the-source-is-not-availabe”警告。

这是为什么?欢迎任何想法/提示/建议!

我尝试过的其他事情:

  • 从 win-library 中删除软件包并重新安装
  • 使用从 GitHub 重新安装包devtools::install_github()
  • 检查包根
  • 更新了所有依赖包
  • 在不同的机器上重复该过程
  • 我开发了另一个包,您可以在此处从 GitHub 克隆它:https ://github.com/ME-Rademaker/cSEM.DGP 。您可以使用此软件包运行相同的过程,但是,在这里我在使用 4.0.0 时没有收到警告......我认为这非常奇怪。
4

1 回答 1

8

我使用您的软件包对此进行了调查,发现您在这里看到的是 RStudio / R 界面中相当深的错误,这是由 R 在 R 4.0 中围绕源代码引用所做的一些细微更改引起的。

\只要函数代码中有反斜杠 ( ),就会出现问题。发生这种情况时,R 正在转义它,这导致 RStudio 认为您正在查看的函数的副本与文件中的不同,这反过来又导致它在代码浏览器中向您显示副本而不是打开文件本身。

由于您的csem()函数包含反斜杠,因此会触发问题。我在我们的问题跟踪器上写了这个:

https://github.com/rstudio/rstudio/issues/6854

于 2020-05-11T22:32:07.510 回答