【问题标题】:Using read.csv with a symlinked file将 read.csv 与符号链接文件一起使用
【发布时间】:2021-02-08 22:22:23
【问题描述】:

我要做什么

我的源文件非常大,我想避免将其复制到其他文件夹中。我决定创建一个指向大文件的符号链接,并希望使用read.csv 来读取文件。

文件夹结构

  • project1/data/source-file.csv
  • project2/data/alias-to-source-file.csv

出了什么问题

在源文件中读取效果很好,但是当我尝试在符号链接中读取时,出现以下错误:line 1 appears to contain embedded nulls

我知道我可以复制文件并将其放入我的第二个项目的文件夹中,但我想知道是否有使用符号链接的方法。如果没有,我想知道一种避免跨多个项目重复数据文件的好方法。

【问题讨论】:

  • 符号链接应该可以工作。这是什么操作系统?确定你正确地制作了符号链接?它真的指向正确的地方吗?
  • 澄清一下,您正在寻找一种 Rstudio 友好的方式,是吗?我不是 Rstudio 大师,但也许您可以澄清为什么不能将数据文件放在另一个文件夹中并使用 read.csv 从两个项目中读取同一个文件。
  • 我正在通过 GUI 使用 OS X 创建别名。我刚刚尝试通过命令行使用ln -s,我遇到了同样的问题。

标签: r symlink read.csv


【解决方案1】:

符号链接在我的系统上正确创建时可以工作。

> read.csv("foo.csv")
  X1 X2 X3
1  3  4  5
2  5  6  7
> system("ln -s foo.csv bar.csv")
> read.csv("bar.csv")
  X1 X2 X3
1  3  4  5
2  5  6  7

错误的符号链接会产生错误,但我无法复制您的错误:

符号链接到不存在的文件:

> system("ln -s nonsuch.csv baz.csv")
> read.csv("baz.csv")
Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") : cannot open file 'baz.csv': No such file or directory

链接到现有目录文件夹:

> system("ln -s / qux.csv")
> read.csv("qux.csv")
Error in read.table(file = file, header = header, sep = sep, quote = quote,  : 
  no lines available in input

【讨论】:

  • 我在 OS X 上通过 GUI 创建别名。我刚刚尝试通过命令行使用ln -s,我遇到了同样的问题。但是你已经给了我足够的信息来知道是符号链接导致了这个问题。我会进一步调查!谢谢!
  • 我可以想象别名不起作用,因为它们只是包含目标元数据的文件,并且确实包含很多空字节,这可能解释了错误的“空”部分。但我不是 OSX 专家,在这里为您寻求更多帮助...
猜你喜欢
  • 1970-01-01
  • 2010-09-16
  • 2014-12-23
  • 2011-05-29
  • 2016-08-09
  • 2021-12-24
  • 1970-01-01
  • 2012-12-14
  • 1970-01-01
相关资源
最近更新 更多