Bagaimana R menangani argumen posisi

Saya seorang pria python dan sangat baru mengenal R (sejauh ini, yang saya lakukan hanyalah menyalin-menempelkan kode dan mengambil tangkapan layar dari grafik yang dihasilkan).

Sekarang saya ingin benar-benar mempelajari bahasa tersebut sehingga saya dapat menggambar plot yang berguna (saat ini, saya sedang mencoba membuat plot ini ).

Saat mencoba plot pertama saya, saya menemukan pemanggilan fungsi ini:

sets_options("universe", seq(from = 0, to = 25, by = 0.1))

Sekarang, saya ingin tahu apakah saya dapat mencapai hasil yang sama dengan menelepon

sets_options("universe", seq(0, 25, 0.1))

Halaman bantuan untuk seq tidak membahas hal ini secara spesifik (atau saya tidak membacanya dengan benar), jadi saya berharap seseorang dapat menjelaskan bagaimana R menangani argumen posisi

Saya mencoba memanggil fungsi seperti itu di R dan berhasil (tidak ada kesalahan sintaksis, dll), tetapi saya tidak tahu cara menguji output dari fungsi itu, jadi saya terpaksa bertanya di sini


person inspectorG4dget    schedule 26.10.2013    source sumber
comment
Detail lengkap tentang cara argumen dicocokkan: cran.r-project.org/doc/manuals/r-release/. Secara kasar, argumen yang diberi nama dicocokkan terlebih dahulu, kemudian argumen yang tersisa (yang lolos) dicocokkan dengan argumen yang tersisa (formal) secara posisi.   -  person Brian Diggs    schedule 26.10.2013
comment
Beberapa komentar tentang kapan menggunakan nama vs. posisi di adv-r.had .co.nz/Functions.html#calling-functions   -  person hadley    schedule 26.10.2013


Jawaban (2)


Memanggil sets_options() akan menampilkan pengaturan saat ini. Dari log berikut, nampaknya argumen posisi diperlakukan seperti yang diharapkan:

> sets_options("universe", seq(0,5,0.25))
> sets_options()
$quote
[1] TRUE

$hash
[1] TRUE

$openbounds
[1] "()"

$universe
 [1] 0.00 0.25 0.50 0.75 1.00 1.25 1.50 1.75 2.00 2.25 2.50 2.75 3.00 3.25 3.50 3.75 4.00 4.25 4.50 4.75 5.00

> sets_options("universe", seq(from=0,to=5,by=0.25))
> sets_options()
$quote
[1] TRUE

$hash
[1] TRUE

$openbounds
[1] "()"

$universe
 [1] 0.00 0.25 0.50 0.75 1.00 1.25 1.50 1.75 2.00 2.25 2.50 2.75 3.00 3.25 3.50 3.75 4.00 4.25 4.50 4.75 5.00
person inspectorG4dget    schedule 26.10.2013
comment
Benar. Argumen posisi selalu valid di R dan urutan yang ada di python tidak ada di R. Anda juga dapat mendefinisikan argumen fungsi Anda dalam urutan apa pun yang Anda inginkan. - person Justin; 26.10.2013

Pertanyaannya adalah apa yang dilakukan seq dengan objek posisi versus objek bernama. Cara mengatasinya dengan melihat halaman ?seq yang menjabarkan argumen bernama dan urutannya:

seq(from = 1, to = 1, by = ((to - from)/(length.out - 1)),
length.out = NULL, along.with = NULL, ...)

Jadi seq(0, 25, 0.1) akan diartikan sama dengan seq(from = 0, to = 25, by = 0.1) karena urutannya sama dengan nama di daftar Penggunaan.

person IRTFM    schedule 26.10.2013
comment
Saya memang membaca halaman itu dan mencoba sampai pada kesimpulan yang Anda usulkan. Namun, saya perhatikan bahwa by defaultnya adalah ((to - from)/(length.out - 1)), dan length.out defaultnya adalah NULL. Jadi, saya tidak begitu yakin tentang variabel apa yang mengambil nilai apa, karena salah satu tugas default menggunakan nilai yang tidak saya berikan - person inspectorG4dget; 27.10.2013
comment
Nilai-nilai Anda menggantikan nilai default. - person IRTFM; 27.10.2013
comment
Namun bagaimana jika saya tidak memberikan nilai untuk ((to - from)/(length.out - 1))? - person inspectorG4dget; 27.10.2013
comment
Kemudian by dihitung menggunakan ekspresi tersebut berdasarkan apa yang diberikan kepada from, to dan length.out - person IRTFM; 27.10.2013
comment
Tapi saya masih belum menentukan length.out, yang defaultnya adalah NULL. - person inspectorG4dget; 27.10.2013
comment
Saya kira Anda perlu merujuk ke wasit utama, kode untuk seq.default. - person IRTFM; 27.10.2013
comment
Itu adalah ide yang luar biasa. Terima kasih - person inspectorG4dget; 27.10.2013