2012-12-27 33 views
0

我有一個R程序,它執行一堆數據分析並將結果輸出到文本文件。不幸的是,當我打電話如何阻止normalizePath返回標記化路徑

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); 
+0

的幫助文件說,'file_path_as_absolute'是'normalizePath'的包裝,所以你得到相同的答案並不奇怪。可複製的例子:什麼是'toFile'?它有空間嗎(通常是一個壞主意)?如果是這樣,你可能需要用引號來保護它......看起來錯誤來自操作系統(即來自「open」),而不是R解釋器...... –

+0

PS你是否檢查過'file_path_as_absolute(toFile) '? –

+0

@BenBolker toFile是保存我想要打開的文件名稱的變量。我如何用引號保護它?輸出文件的名稱中沒有空格。 – user1876508

回答

0

我可以得到下面的代碼到我的系統上工作,在姐姐目錄../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()爲你工作?)

(發佈作爲回答,而不是代碼格式化目的的評論...)

+0

我實現了你的代碼,我仍然收到同樣的錯誤。 – user1876508

+0

這意味着你已經運行了上面顯示的代碼(但是用'open'而不是'gedit')?或者你是否試圖將我的想法融入你的代碼?可以想象,這是一個特定於平臺的事情(你是在MacOS上?),我可能會在明天在Mac上嘗試這種方式 - 但除此之外,如果沒有**可重現的示例**,我無法繼續抱歉)。查看上面評論中的鏈接... –