2016-12-30 9 views
7

私は、特定のフォルダ内のhtmlファイルに保存する地図のリーフレットを持っています。 私はWindows 7をRのhtmlwidgetからのsavewidgetは、別のフォルダにhtmlファイルを保存できません。

使用していますが、私は、次の試してみました:私はどちらかが

を持って、Rstudioセッションに応じて、エラーメッセージとして

library(htmlwidgets) 
saveWidget(map_leaflet, file="ressources/test.html") 

library(htmlwidgets) 
saveWidget(map_leaflet, file="ressources\\test.html") 

library(htmlwidgets) 
path_name <- file.path("ressources", "test.html", fsep="\\") 
saveWidget(map_leaflet, file=path_name) 

library(htmlwidgets) 
path_name <- paste("ressources", "test.html", sep="/") 
saveWidget(map_leaflet, file=path_name) 

1)setwdでエラーが発生しました(DIR):

2作業ディレクトリを変更することはできません)私はこのように保存するときにパス

を見つけることができません。

library(htmlwidgets) 
saveWidget(map_leaflet, file="test.html") 

これは完全に機能します。

ご協力いただきありがとうございます。

+0

'ressources'というディレクトリは、コードが実行されている場所からは存在しないようです。正しいディレクトリから実行していることを確認するためにこのコードを実行する直前に 'getwd()'をチェックしてみましたか? 'ds()'はその場所に 'ressources'が存在することを確認していますか?これらの両方が正しいと思われる場合は、保存しないうちに 'setwd(" ressources ")'を使用してそのディレクトリに変更してください。 – user5359531

+2

こんにちは、私はgetwd()とdir()を試して、ressourcesが正しく表示されます。次に、この 'path < - file.path(getwd()、" ressources "、" test.html ")' 'saveWidget(map_leaflet、file = path)'を試してみました。私はそれがちょうど完全な道を必要としたと思う。あなたは答えとしてあなたのコメントをすることができます私は答えとして質問をマークすることができますか?ありがとうございました – tuttifolies

+0

私のヒントはトラブルシューティングだけでした。あなたが思っている場所からコードを実行していないような気がします。しかし、あなたが見つけたように、完全なパスを使い、 'file.path()'を使うことは、パスを安全に渡すより確実な方法です。あなたは 'normalizePath()'関数を見たいかもしれません。絶対パスを取得するのに役立ち、パスが存在しないか正しくないかどうかを知らせることもできます。 'normalizePath("。 ")'、 'normalizePath("〜 ")'、 'normalizePath(" ./foo ")' < - 'foo'が存在しない場合はエラーを返します。また、単に 'file ='に相対パスを使うことができないかもしれません – user5359531

答えて

6

ここ

は、回避策です:

f<-"ressources\\test.html" 
saveWidget(map_leaflet,file.path(normalizePath(dirname(f)),basename(f))) 

問題がsaveWidgetは、相対パス名では動作しませんとnormalizePathがまだ存在して行われたファイルへのパスのために動作しないことのように見えます。

私はこれをsaveWidgetのバグと呼びます。

関連する問題