Saya mengerjakan beberapa tutorial dalam R. Setiap kode R terkandung dalam folder tertentu. Ada file data dan file lain di sana. Saya ingin membuka .r
file dan sumbernya sehingga saya tidak perlu mengubah direktori kerja di Rstudio seperti yang ditunjukkan di bawah ini:
Apakah ada cara untuk menentukan direktori kerja saya secara otomatis di R.
r
automation
working-directory
Stat-R
sumber
sumber
?setwd
?getwd
load
file .rdata di folder yang sama, tidaksource
dengan direktori kerja diatur ke jalur file yang bersumber.Jawaban:
Untuk mendapatkan lokasi sumber skrip, Anda dapat menggunakan
utils::getSrcDirectory
atauutils::getSrcFilename
. Jadi mengubah direktori kerja ke file saat ini dapat dilakukan dengan:Ini tidak berfungsi di RStudio jika Anda Menjalankan kode dan bukannya Sumbernya . Untuk itu, Anda perlu menggunakan
rstudioapi::getActiveDocumentContext
.Solusi kedua ini mengharuskan Anda menggunakan RStudio sebagai IDE Anda, tentu saja.
sumber
Error: 'getActiveDocumentContext' is not an exported object from 'namespace:rstudioapi'
getActiveDocumentContext()
konsol di dalam RStudio, lintasan dilaporkan sebagai''
. Namun, jika Anda menjalankan baris kode di bagian editor, itu akan dieksekusi seperti yang diharapkan. Ini dapat membahas komentar @ndrurstudioapi
paket yang sangat lama . Coba perbarui ke yang terbaru.Saya tahu pertanyaan ini sudah usang, tetapi saya juga mencari solusi untuk itu dan Google mencantumkan ini di bagian paling atas:
letakkan di suatu tempat ke dalam file (yang terbaik adalah permulaan), sehingga wd diubah sesuai dengan file itu.
Menurut komentar, ini mungkin belum tentu berfungsi pada setiap platform (Windows tampaknya berfungsi, Linux / Mac untuk beberapa). Perlu diingat bahwa solusi ini adalah untuk 'sumber' file, tidak harus untuk menjalankan potongan dalam file itu.
lihat juga dapatkan nama file dan jalur file `source`d
sumber
Error in dirname(parent.frame(2)$ofile) : a character vector argument expected
berfungsi untuk saya tetapi jika Anda tidak ingin menggunakan rstudioapi dan Anda tidak dalam proyect, Anda dapat menggunakan simbol ~ di jalur Anda. Simbol ~ merujuk ke direktori kerja RStudio default (setidaknya pada Windows).
Jika direktori kerja RStudio Anda adalah "D: / Documents",
setwd("~/proyect1")
sama dengan setwd ("D: / Documents / proyect1").Setelah Anda mengaturnya, Anda dapat menavigasi ke subdirektori:
read.csv("DATA/mydata.csv")
. Apakah sama denganread.csv("D:/Documents/proyect1/DATA/mydata.csv")
.Jika Anda ingin menavigasi ke folder induk, Anda dapat menggunakan
"../"
. Sebagai contoh:read.csv("../olddata/DATA/mydata.csv")
yang sama denganread.csv("D:/Documents/oldata/DATA/mydata.csv")
Ini adalah cara terbaik bagi saya untuk membuat kode skrip, apa pun komputer yang Anda gunakan.
sumber
Jawaban ini dapat membantu:
Saya menemukannya di: https://support.rstudio.com/hc/communities/public/questions/200895567-can-user-obtain-the-path-of-current-Project-s-directory-
Jawaban BumbleBee (dengan parent.frame sebagai gantinya sys.frame) tidak berfungsi untuk saya, saya selalu mendapatkan kesalahan.
sumber
Untuk rstudio , Anda dapat secara otomatis mengatur direktori kerja Anda ke direktori skrip menggunakan rstudioapi seperti itu:
Ini berfungsi saat Menjalankan atau Sumber file Anda.
Anda harus menginstal paket rstudioapi terlebih dahulu. Perhatikan bahwa saya mencetak path untuk 100% yakin saya di tempat yang tepat, tetapi ini opsional.
sumber
Solusinya
tidak bekerja untukku.
Saya menggunakan algoritma brute force, tetapi berfungsi:
Lebih mudah saat mencari direktori:
sumber
Jika Anda bekerja di Linux, Anda dapat mencoba ini:
setwd(system("pwd", intern = T) )
Ini bekerja untuk saya.
sumber
pwd
juga berfungsi di PowerShell (yang saat ini dianggap sebagai shell default pada Windows), yang merupakan alias untukGet-Location
.Saya hanya mencari solusi untuk masalah ini, datang ke halaman ini. Saya tahu ini tanggal tetapi solusi sebelumnya di mana tidak memuaskan atau tidak bekerja untuk saya. Inilah pekerjaan saya jika tertarik.
sumber
setwd( dirname(filepath) )
?Saya menyadari bahwa ini adalah utas lama, tetapi saya memiliki masalah yang sama dengan perlu mengatur direktori kerja dan tidak bisa mendapatkan salah satu solusi untuk saya. Inilah yang berhasil, kalau-kalau ada orang yang tersandung di kemudian hari:
Agak berbelit-belit, tetapi pada dasarnya ini menggunakan perintah sistem untuk mendapatkan direktori kerja dan menyimpannya ke dummyfile.txt, kemudian R membaca file itu menggunakan data.table :: fread. Sisanya hanya membersihkan apa yang telah dicetak ke file sehingga saya hanya memiliki jalur direktori.
Saya perlu menjalankan R pada sebuah cluster, jadi tidak ada cara untuk mengetahui direktori apa yang akan saya tuju (pekerjaan akan diberi nomor dan node komputasi). Ini berhasil bagi saya.
sumber
Saya mengerti ini sudah ketinggalan zaman, tetapi saya tidak bisa mendapatkan jawaban sebelumnya untuk bekerja dengan sangat memuaskan, jadi saya ingin berkontribusi metode saya jika ada orang lain yang menemukan kesalahan yang sama yang disebutkan dalam komentar untuk jawaban BumbleBee.
Milik saya didasarkan pada perintah sistem sederhana. Yang Anda beri makan fungsi adalah nama skrip Anda:
Output dari fungsi akan terlihat seperti
"/Users/you/Path/To/Script"
. Semoga ini bisa membantu orang lain yang mungkin terjebak.sumber
The
here
paket menyediakanhere()
fungsi, yang mengembalikan direktori root proyek Anda berdasarkan beberapa heuristik.Bukan solusi yang sempurna, karena tidak menemukan lokasi skrip, tetapi cukup untuk beberapa tujuan jadi saya pikir saya akan meletakkannya di sini.
sumber
here::set_here()
dalam sumber.Sebagian besar GUI berasumsi bahwa jika Anda berada di direktori dan "buka", klik dua kali, atau coba jalankan file .R, direktori di mana ia berada akan menjadi direktori yang berfungsi kecuali ditentukan lain. GUI Mac menyediakan metode untuk mengubah perilaku default yang dapat diubah di panel Startup Preferensi yang Anda tetapkan dalam sesi berjalan dan menjadi efektif di "startup" berikutnya. Anda juga harus melihat:
Dokumentasi RStudio mengatakan:
"Ketika diluncurkan melalui asosiasi file, RStudio secara otomatis menetapkan direktori kerja ke direktori file yang dibuka." Pengaturan default adalah agar RStudio didaftarkan sebagai penangan untuk file .R, meskipun ada juga menyebutkan kemampuan untuk mengatur "asosiasi" default dengan RStudio untuk ekstensi .Rdata dan .R. Apakah memiliki status 'penangan' dan status 'asosiasi' sama di Linux, saya tidak tahu.
http://www.rstudio.com/ide/docs/using/workspaces
sumber
juga tidak bekerja untuk saya, tetapi yang berikut (seperti yang disarankan dalam https://stackoverflow.com/a/35842176/992088 ) berfungsi untuk saya di ubuntu 14.04
sumber
Error: 'getActiveDocumentContext' is not an exported object from 'namespace:rstudioapi'
juga di Ubuntu 14,04Jika Anda menggunakan pengkodean UTF-8:
Anda perlu menginstal paket rstudioapi jika Anda belum melakukannya.
sumber
Berikut cara lain untuk melakukannya:
sumber