【问题标题】:How to stop normalizePath from returning a tokenized path如何阻止 normalizePath 返回标记化路径
【发布时间】:2012-12-27 16:56:04
【问题描述】:

我有一个 R 程序,它执行大量数据分析并将结果输出到文本文件。不幸的是,当我打电话时

system2("open", file_path_as_absolute(toFile));

R 解释器声明如下

'../output/HLA-A,B,C,DR,DP,DQ' not found
'GT2' not found
'vs' not found
'LT2_DRB1_output2of9.10.11.12.13.14.16.25.26.28.30.31.32.33.37.38.40.47.57.58.60
.67.70.71.73.74.77.78.85.86.txt' not found

基于此错误,我假设 file_path_as_absolute 标记了文件名,但我不确定如何禁用它。我也尝试过 normalizePath(),但我得到了同样的错误。

编辑

文件本身被称为

"HLA-A,B,C,DR,DP,DQ GT2 vs LT2_DRB1_output2of9.10.11.12.13.14.16.25.26.28.30.31.32.33.37.38.40.47.57.58.60.67.70.71.73.74.77.78.85.86.txt" 

并且位于../output

这是我打开文件时运行的代码,它给了我同样的错误

openSesame <- paste0('"', file_path_as_absolute(toFile), '"');
system2("open", openSesame);

【问题讨论】:

  • 帮助文件说file_path_as_absolutenormalizePath 的包装,所以你得到相同的答案也就不足为奇了。请提供可重现的示例:toFile 是什么?它里面有空格吗(通常是个坏主意)?如果是这样,您可能需要用引号保护它......看起来错误来自操作系统(即来自open),而不是R解释器......
  • PS你检查file_path_as_absolute(toFile)的结果了吗?
  • @BenBolker toFile 是保存我要打开的文件名的变量。如何用引号保护它?输出文件的名称中确实包含空格。
  • paste0('"',file_path_as_absolute(toFile)),'"') 可能会起作用。但是一个可重复的例子tinyurl.com/reproducible-000 会很有帮助。
  • 这不行,我会在我的原帖上给你看更新后的代码

标签: r text runtime-error token output


【解决方案1】:

我可以让以下代码在我的系统上运行,从存在姐妹目录../output 的目录开始(我的系统上没有open,所以我使用gedit 作为外部命令):

fn <- "HLA-A,B,C,DR,DP,DQ GT2 vs LT2_DRB1_output2of9.10.11.12.13.14.16.25.26.28.30.31.32.33.37.38.40.47.57.58.60.67.70.71.73.74.77.78.85.86.txt"
prot <- function(x) paste0('"',x,'"')
writeLines(c("a","b"),con=paste0("../output/",fn))
n <- tools::file_path_as_absolute(paste0("../output/",fn))
file.show(n)
system2("gedit",prot(n))

您能否按照这些思路制作一个在您的系统上失败的可重现示例? (file.show() 适合你吗?)

(出于代码格式化的目的,作为答案而不是评论发布......)

【讨论】:

  • 我实现了你的代码,但我仍然收到同样的错误。
  • 意味着您已经运行了我在上面显示的代码(但使用open 而不是gedit)?还是您想将我的想法融入您的代码中?可以想象,这是一个特定于平台的东西(你在 MacOS 上吗?),我明天也许可以在 Mac 上尝试这个——但否则,如果没有 可重现的例子(对不起)。请参阅上面 cmets 中的链接...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-19
  • 1970-01-01
  • 2012-10-10
  • 2020-10-21
相关资源
最近更新 更多