【问题标题】:"Temporary name too long" error that appears unexpectedly using Rnotebook使用 Rnotebook 意外出现“临时名称太长”错误
【发布时间】:2018-05-30 13:05:10
【问题描述】:

在使用 rnotebook 时,通过扫帚获取线性回归模型的输出时出现以下错误。

这是我遇到的一个虚拟示例:

    N <- 100
a <- rnorm(N)
b <- a + rnorm(N)
df1 <- data.frame(a, b)

lModel <- lm(b ~ a, df1)

summary(lModel)

如果我想得到 tidy(lModel) 的输出,我会得到错误:

临时文件中的错误(pattern = "_rs_rdf_", tmpdir = outputFolder, fileext = ".rdf"):临时名称太长

问题是我不久前使用了扫帚的tidy() 函数并得到了输出。我想知道可能是什么问题,以及如何解决。

这是上述错误的回溯:

Error in tempfile(pattern = "_rs_rdf_", tmpdir = outputFolder, fileext = ".rdf") : temporary name too long
4.
tempfile(pattern = "_rs_rdf_", tmpdir = outputFolder, fileext = ".rdf")
3.
overridePrint(o$x, o$options, o$className, o$nRow, o$nCol)
2.
print.data.frame(x)
1.
function (x, ...) UseMethod("print")(x)

提前非常感谢。

【问题讨论】:

  • 澄清一下,在使用 tidy() 函数之前,该包已从库中调用。
  • @marc_s 非常感谢您对此问题的更正。
  • 您使用的是什么操作系统?我在目录嵌套太多级别的 Windows 上看到过这样的错误。 Windows API 有一个很短的maximum path length of 260 chars。在 Unix 系统上,这要长得多,但文件名的最大长度为 255 个字符。
  • 感谢@dshkol 的评论。我正在使用 Windows 10 64 位。我必须设置其他配置吗?我很好奇为什么rnotebooks(或rmarkdown)会出现这种行为。我将代码放在 rnotebook 之外(键入并直接在 R 控制台中运行),它工作正常。
  • 只需调整您的工作目录,或您保存临时文件的结构。它要么嵌套太深,要么使用的名称太长,因此路径超出了 Windows 的路径限制。

标签: r rnotebook


【解决方案1】:

当目录嵌套太多级别时,Windows 系统会发生此错误。Windows API has a maximum path length of 260 characters

最大路径长度限制 在 Windows API(以下段落中讨论的一些例外情况)中,路径的最大长度为 MAX_PATH,定义为 260 个字符。本地路径按以下顺序构造:驱动器号、冒号、反斜杠、由反斜杠分隔的名称组件和终止空字符。例如,驱动器 D 上的最大路径是“D:\some 256-character path string”,其中“”表示当前系统代码页的不可见终止空字符。 (字符 在这里用于视觉清晰,不能作为有效路径字符串的一部分。)

这很容易避免。只需调整您的工作目录或保存临时文件的结构。您的文件名太长,或者您的目录嵌套太深,因此路径超出了 Windows 的路径限制。

顺便说一句,在 Unix 系统上,最大路径要长得多,但文件名的最大长度为 255 个字符。

【讨论】:

  • 如何调整保存临时文件的结构?
  • 您可以在.renviron 文件中将其指定为一个选项。这是一个示例:stackoverflow.com/a/17108351/3211560
  • 这个Windows问题很痛苦,为什么首先会有这个限制?我希望有一天新版本的 Windows 能结束这种痛苦
【解决方案2】:

这可以通过在 Windows 10 上更改注册表来解决。

  1. 在开始菜单中搜索regedit打开注册表编辑工具
  2. 导航到Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
  3. LongPathsEnabled0 更改为 1

现在 256 个字符的限制将被忽略。

2018 年 8 月 4 日更新:如果您的 R 工作目录位于 Google Drive File Stream 文件夹中,则仍会执行限制。这是因为 GDFS 是一个有自己限制的虚拟驱动器。

【讨论】:

  • 非常感谢加布里埃尔。
  • 不幸的是,如果 dir 在 OneDrive (Sharepoint) 文件夹中也不起作用
  • 我完全不明白这一点,但它工作得很好!感谢您的帮助。
  • 它应该是相同的注册表位置。如果它不适合你,请告诉我
  • 我的 LongPathsEnabled 已设置为 1,但我一直收到同样的错误。
猜你喜欢
  • 1970-01-01
  • 2020-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-18
  • 2023-03-13
  • 1970-01-01
  • 2013-07-06
相关资源
最近更新 更多