質問

Rの人生の早い段階で、ディレクトリとサブディレクトリの区切りになったときに、Rとウィンドウが異なるページにあるという痛みを発見しました。問題については知っていますが、すべてのバックスラッシュの前に手動でバックスラッシュを置くか、すべてをスラッシュに置き換える必要があるので、まだ苦痛です。

コンピューターで実行しているいくつかのアプリケーション(たとえば、XYPlorer、Everything by voidtools)のいずれかでパス名またはファイル名全体をコピーし、それをTinn-Rに貼り付けるのが大好きです。とにかく、私が現在行っているタスクを手動で自動化することができますか。

  • Tinn-Rに設定はありますか?
  • Rに設定はありますか
  • デフォルトでそれを行うオートホットキースクリプトはありますか?

私が話していることを知らない人のための背景

R for Windows FAQ、R-2.9.2バージョン、B。D. RipleyおよびD. J. Murdochからの引用

  

Rではバックスラッシュを二重にする必要があります   文字列なので、たとえば   ニーズ   `" d:\ R-2.9.2 \ library \ xgobi \ scripts \ xgobi.bat" '   自分の人生を楽にすることができます   スラッシュをパスとして使用することにより   セパレーター:Windowsで動作します

役に立ちましたか?

解決

" rfil"と入力してトリガーされる autohotkey スクリプトを作成しました-逆コンマなし。

:O:rfil:: ;replaces backslashes with forward slashes in a file name that is stored on the clipboard
StringReplace,clipboard,clipboard,\,/,All
send %clipboard%
return

sendコマンドを使用するよりも簡単な方法を教えていただければ幸いです。 すべてのコンピューターでautohotkeyスクリプトを常に実行しているため、このスクリプトを実行するために新しいソフトウェアをダウンロードする必要はありませんでした。デフォルトのスクリプトファイルに追加しただけです。

あなたが私にしたい場合、私がやったことを説明させていただきます。

他のヒント

ClipPath は、右クリックメニューオプションを追加して、使用するスラッシュの種類を選択します。貼り付けます。

Via Getting Genetics Done 、これは一般にRユーザーにとって有用なリソースになりそうです。

RStudioに何かを貼り付けるたびに、共有される次の自動ホットキーコードをすべてのバックスラッシュをスラッシュに置き換えるように調整しました。このアプローチには長所と短所があります。

長所:考える必要はありません。コードは、アクティブウィンドウがRStudioの場合にのみ実行されます。

短所: Rに何かを貼り付けるたびにコードが呼び出されます。バックスラッシュを見つけてスラッシュに置き換えるたびに呼び出されます。

GroupAdd, R, RStudio

;replaces backslashes with forward slashes in a file name that is stored on the clipboard
#IfWinActive ahk_group R
   ^v::
      StringReplace,clipboard,clipboard,\,/,All
      send %clipboard%
   return
#IfWinActive

検索&を使用します置き換えますが、もちろん完全に自動ではないため、" \ t"を置き換えないように注意する必要があります。または" \ n"。

あなたが探している答えそのものではありませんが、Rには私がよく使用する独自のシェルスクリプト関数があります:

list.files(、full = TRUE)[適切な区切り文字でフルパスを返します]

file.path()[OS固有のセパレータと結合]

など...

すべてのパス名を囲むラッパー関数を作成できます:

> replace.slash <- function(path.name) gsub("\\\\","/",path.name)
> path.name <- "c:\\tmp\\"
> replace.slash(path.name)
[1] "c:/tmp/"

[編集]:ありがとう、ハドリー。そこでエラーを修正しました。

偶然、私はこれを非常にで見つけましたこの件名

これは同じことを行う AutoIt コードです( \ / を含むcode>)。

Local $text1 = ClipGet()
$text2=StringReplace($text1,"\","/")
ClipPut($text2)

なぜOSをチェックし、適切なファイル区切り文字を返す関数を作成しないのですか(私が信じるJavaソリューション)?

file_sep <- function(){
ifelse(.Platform$OS.type == "unix", "/", "//")
}
file_sep()

必要に応じて短い名前を選択できます。ここでの大きな欠点は、ファイルパスを一緒に貼り付ける必要があることですが、大きなプロジェクトで作業している場合は、長期的な価値があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top