如何阻止normalizePath返回标记化路径
我有一个R程序,它可以进行大量的数据分析,并将结果输出到一个文本文件中。不幸的是当我打电话时如何阻止normalizePath返回标记化路径,r,text,runtime-error,token,output,R,Text,Runtime Error,Token,Output,我有一个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.5
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);
openSesame我可以从存在姐妹目录。/output
的目录中获取以下代码在我的系统上运行(我的系统上没有open
,因此我使用gedit
作为外部命令):
fn帮助文件说file\u path\u as\u absolute
是normalizePath
的包装器,因此得到相同的答案并不奇怪。请重复示例:什么是toFile
?里面有空间吗(通常是个坏主意)?如果是这样,你可能需要用引号来保护它。。。看起来错误来自操作系统(即来自open
),而不是R解释器…PS您是否检查了文件路径的结果作为绝对值(toFile)
?@BenBolker toFile是保存我要打开的文件名的变量。我如何用引号保护它?输出文件的名称中确实有空格。可能paste0(“”,file_path_as_absolute(toFile)),“”)
会起作用。但是,一个可复制的示例将非常有用。这不起作用,我将在我的原始帖子上向您显示更新的代码。我实现了您的代码,但仍然收到相同的错误。这意味着您已经运行了我上面显示的代码(但是使用打开而不是gedit
)?还是你想把我的想法融入你的代码?可以想象,这是一个特定于平台的东西(你在MacOS上吗?),我明天可能可以在Mac上尝试——但是,如果没有一个可复制的示例,我将无法继续(对不起)。请参阅上面评论中的链接。。。
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))