5

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

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

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

何を言っているのかわからない人のための背景

R for Windows FAQ、R-2.9.2 のバージョン、BD Ripley および DJ Murdoch からの引用

R の文字列ではバックスラッシュを二重にする必要があるため、たとえば「d:\R-2.9.2\library\xgobi\scripts\xgobi.bat」が必要です。スラッシュをパス区切り記号として使用すると、作業が楽になります。これらは Windows でも機能します。

4

9 に答える 9

7

「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 スクリプトを実行しているので、このスクリプトを実行するために新しいソフトウェアをダウンロードする必要はありませんでした。デフォルトのスクリプトファイルに追加しただけです。

もしよろしければ、私が何をしたかを喜んで説明させていただきます。

于 2009-09-16T21:41:24.817 に答える
2

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

Getting Genetics Doneを介して、一般的な R ユーザーにとって有用なリソースになるようです。

于 2009-09-14T19:33:28.810 に答える
1

これは、同じことを行うAutoItコードです ( に置き換えます\) /

Local $text1 = ClipGet()
$text2=StringReplace($text1,"\","/")
ClipPut($text2)
于 2012-12-06T14:30:36.607 に答える
1

すべてのパス名の周りにラッパー関数を作成できます。

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

[編集]:ハドリーに感謝します。そこでエラーを修正しました。

ちなみに、私はこの件に関して非常に有益な議論を見つけました。

于 2009-09-10T20:45:11.577 に答える
0

OSをチェックして適切なファイルセパレータを返す関数を作成してみませんか(私が信じているJavaソリューション)?

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

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

于 2009-09-11T17:41:46.033 に答える
0

@Farrel のコードを少し拡張して (どうもありがとうございます!)、選択したファイルの完全なファイル パスを取得し、(必要に応じて) R でより適切に使用できるようにスラッシュを交換する AutoHotkey スクリプトを次に示します。

また、このスクリプトは、マップされたドライブを完全なネットワーク パスに置き換えます。これを使用するには、このスクリプトを編集して特定のマップされたドライブを探し、それらのドライブ文字をフル パスに置き換える必要があります。

設定に少し時間がかかりましたが、とても便利です。私はこれを毎日使用しています。

;If Windows explorer is active...
#IfWinActive ahk_class CabinetWClass 

; ALT + F - Get the filepath to the file
!f::
SendInput, ^c
Sleep 100
Clipboard := Clipboard
return

;Check for and replace mapped drive names on the clipboard with full file paths
If InStr(Clipboard,"X:\",1) {
Clipboard := "\\SERVER_NAME\g$\" SubStr(Clipboard,4, (StrLen(Clipboard )))
} else if InStr(Clipboard,"K:\",1) {
Clipboard := "\\SERVER_NAME\Data\" SubStr(Clipboard,4, (StrLen(Clipboard )))
} else if InStr(Clipboard,"Q:\",1) {
Clipboard := "\\SERVER_NAME\Data\" SubStr(Clipboard,4, (StrLen(Clipboard )))
} else if InStr(Clipboard,"L:\",1) {
Clipboard := "\\SERVER_NAME\" SubStr(Clipboard,4, (StrLen(Clipboard )))
} 
Return

; ALT + S - Replaces backslashes with forward slashes (helpful for R)
; Source: https://stackoverflow.com/questions/1407238/relief-from-backslash-irritation-in-r-for-windows
!s::
StringReplace,clipboard,clipboard,\,/,All
send %clipboard%
return

; Scripts below this point will run in any active window
#IfWinActive
于 2019-07-19T14:30:52.710 に答える