Întrebări, răspunsuri și îndoieli despre r

Ultimele întrebări publicate

Răspunsuri
trecerea obiectelor pentru a returna rezultate într-o eroare (Programare, R) 2
R – Coloane nedefinite selectate atunci când se subsumează cadrul de date în cadrul unei funcții (Programare, R) 3
R – funcția svd() – valori infinite sau lipsă în ‘x’ (Programare, R, Infinit, Svd) 1
Cum să obțineți ajutor în R? (Programare, R, R Faq) 5
Aplicația Tumblr activată în timp ce telefonul Android este conectat la wifi-ul de la locul de muncă (Programare, R, Json, Web Scraping) 1
R – reformatarea valorii P în ggplot folosind ‘stat_compare_means’ (Programare, R, Ggplot2, Ggpubr) 1
Funcție indicatoare în R (Programare, R, Funcție) 4
Adăugați legenda la graficul de linie ggplot2 (Programare, R, Ggplot2, Legendă, R Faq) 3
Expresia matricei provoacă eroarea „necesită argumente numerice/complexe matrice/vector”? (Programare, R, Matrix, Multiplicare Matrice, Transpune) 4
Cum să scrieți etichete în barplot pe axa x cu nume duplicate? (Programare, R, Plot) 4
Eliminarea unei părți dintr-un șir de caractere (Programare, R, Regex, String) 6
Repetă rândurile unui cadru de date de N ori (Programare, R, Dataframe) 7
Care este diferența dintre folosirea punct și virgulă sau a unei linii noi explicite în codul R (Programare, R) 1
Extragerea timpului dintr-un șir de caractere cu strptime() în R, returnând NA (Programare, Regex, R, Data, Timp, Strptime) 2
fuzionează 3 data.frames după numele coloanelor (Programare, R, Dataframe) 3
mean() avertisment: argumentul nu este numeric sau logic: returnează NA (Programare, R) 3
Ce înseamnă operatorii %op%? De exemplu, „%in%”? (Programare, R, Sintaxă, Operatori, R Faq) 5
Funcția returnează întotdeauna numeric(0) [închis] (Programare, R) 1
Cum să te descurci cu: Eroare: nu s-a putut găsi funcția „read_csv” (Programare, R) 2
cum se poate schimba culoarea în geom_point sau linii în ggplot [duplicat] (Programare, R, Ggplot2) 2
Reprezentați datele în ordine descrescătoare așa cum apar în cadrul de date [duplicat] (Programare, R, Ggplot2) 1
colour=”black” în geom_smooth schimbă linia lm cu R gglplot2. De ce? (Programare, R, Ggplot2) 2
Cum se poate preveni notația științifică în R? [duplicat] (Programare, R) 2
Cum pot rezolva eroarea de locație și/sau dimensiune nedefinită pentru viewport? (Programare, R, Ggplot2) 1
Diferența dintre indexarea cadrului de date și indexarea matricei (Programare, R, Matrix, Dataframe) 2
Faceți matrice de caractere 0/1 din arborele filogenetic aleatoriu în R? (Programare, R, Filogenie, Maimuță Phylo) 2
Cum se definește o funcție în bucăți în R (Programare, R, Funcție, Piecewise) 6
Setarea unui director de lucru: „Eroare în setwd: nu se poate schimba directorul de lucru” sub „C:/Documents and Settings/…” (Programare, R, Windows 10, Director De Lucru, Setwd) 4
rânduri duplicate într-un cadru de date în R (Programare, R, Dataframe) 5
Ștergeți rândurile care conțin anumite șiruri de caractere în R (Programare, R, String, Match, Rânduri) 6
Valoarea inițială în „vmmin” nu este finită nici măcar atunci când se modifică valoarea inițială (Programare, R) 1
eroare de corelație: „x” trebuie să fie numeric (Programare, R, Numeric, Xts, Corelație, Stocuri) 1
Trasarea unei legende în afara zonei de trasare în grafica de bază? (Programare, R, Plot, Legendă) 10
Nu se poate rula lmer din interiorul unei funcții (Programare, R, Lme4) 1
R, schimbați numele legendei ggplot cu scale_linetype_manual (Programare, R, Plot, Ggplot2) 2
Care este diferența dintre R pătrat multiplu și R pătrat ajustat într-o regresie cu o singură variabilă a celor mai mici pătrate? (Programare, R, Statistici, Regresie) 4
R.exe, Rcmd.exe, Rscript.exe și Rterm.exe: care este diferența? (Programare, R, Executabil, Rgui, Rterm) 1
Cum se îmbină două coloane în R cu un anumit simbol? (Programare, R, Îmbină, Simboluri) 2
str_extrage modele specifice (exemplu) (Programare, Regex, R) 4
Eroare R „suma nu este semnificativă pentru factori” (Programare, R, Factor R, Date Categorice) 1
Găsirea valorilor din elementele unei liste mai mari decât X (Programare, R, Lista, Lapply) 2
Cum se mărește dimensiunea fontului într-un grafic în R? (Programare, R, Plot) 7
Când să utilizați funcția „Do” în dplyr (Programare, R, Dplyr) 1
Extragerea ultimelor n caractere dintr-un șir de caractere în R (Programare, R, String, Substring) 15
Există o funcție în R care poate rotunji în jos sau în sus la un număr întreg? (Programare, R) 1
Cum pot întrerupe un cod în execuție în R cu o comandă de la tastatură? (Programare, R) 4
„Anveloparea eronată a structurilor de ecuații” în utilizarea „begin{align}” într-o ecuație cu mai multe linii în rmarkdown pentru a tricota+pandoc pdf (Programare, R, Latex, Knitr, Rstudio, R Markdown) 1
R: „Eroare de operator unitar” din comanda multilinie ggplot2 (Programare, R, Ggplot2, Multiline, Reshape2) 4
este declarată în spațiul de lucru al utilizatorului, astfel încât să o puteți utiliza după ce apelul funcției a fost finalizat.


Există o preferință generală în rândul comunității R pentru utilizarea funcției pentru atribuire (în afara semnăturilor funcțiilor) pentru compatibilitate cu versiunile (foarte) vechi ale S-Plus. Rețineți că spațiile ajută la clarificarea unor situații precum


Majoritatea IDE-urilor R au comenzi rapide de la tastatură pentru a face mai ușor de tastat. Ctrl + = în Architect, Alt + - în RStudio (Opțiunea + - în macOS), Shift + - (subliniere) în emacs+ESS.


Dacă preferați să scrieți la dar doriți să folosiți simbolul de atribuire mai comun pentru codul lansat public (pe CRAN, de exemplu), atunci puteți folosi unul dintre simbolurile din cadrul funcțiilor pentru a înlocui automat cu .


Răspunsul la întrebarea „De ce nu aruncă o eroare, dar nu și ?” este „Depinde de magia conținută în parser”. Sintaxa lui R conține multe cazuri ambigue care trebuie să fie rezolvate într-un fel sau altul. Analizatorul alege să rezolve biții expresiei în ordine diferită, în funcție de dacă sau a fost utilizată.

Pentru a înțelege ce se întâmplă, trebuie să știți că atribuirea returnează în mod silențios valoarea care a fost atribuită. Puteți vedea acest lucru mai clar prin imprimarea explicită, de exemplu .

În al doilea rând, este mai clar dacă folosim notația de prefix pentru atribuire. Astfel,

Analizatorul interpretează ca

Ne-am putea aștepta ca ar fi atunci

dar, de fapt, este interpretat ca

Acest lucru se datorează faptului că are o precedență mai mică decât așa cum se arată pe pagina de ajutor.

Acest lucru este menționat și în capitolul 8.2.26 din The R Inferno de Patrick Burns (Nu sunt eu, dar oricum este o recomandare) – UweCu toate acestea, are același efect ca și . – Francesco Napolitanonu le consider cu adevărat scurtături, în orice caz, apăsați același număr de taste… yosemite_kTocmai mi-am dat seama că explicația ta despre cum este interpretată este ușor greșită: în realitate, R o interpretează ca fiind (care la rândul său este mai mult sau mai puțin echivalent cu ). Yikes! – Konrad Rudolph… Și tocmai mi-am dat seama că prima parte a acestui răspuns este incorectă și, din păcate, destul de înșelătoare, deoarece perpetuează o concepție greșită comună: Modul în care utilizați într-un apel de funcție nu realizează o atribuire, și nu este un operator de atribuire. Este o expresie R analizată complet distinctă, care se întâmplă să folosească același caracter. Mai mult, codul pe care îl arătați nu „declară” în domeniul de aplicare al funcției. Adresa declarația funcției efectuează declarația respectivă. Apelarea funcției nu o face (devine puțin mai complicat cu funcțiile numite numite). – Konrad RudolphNosredna

Ghidul de stil R de la Google simplifică problema prin interzicerea lui „=” pentru atribuire. Nu este o alegere rea.

https://google.github.io/styleguide/Rguide.xml

Manualul R intră în detalii frumoase despre toți cei 5 operatori de atribuire.

http://stat.ethz.ch/R-manual/R-patched/library/base/html/assignOps.html

142Dezavantajul atribuirii accidentale prin atunci când a fost intenționată, mă supără atât de mult încât, personal, prefer . Faptul că codul tău depinde de prezența spațiilor albe nu mi se pare un lucru bun. Este în regulă să sugerezi spațierea ca un sfat de stil, dar ca codul tău să ruleze diferit indiferent dacă un spațiu este prezent sau nu? Ce se întâmplă dacă reformatați codul, sau dacă folosiți căutarea și înlocuirea, spațiul alb poate dispărea uneori și codul merge prost. Aceasta nu este o problemă cu . IIUC, care interzice echivalează cu a cere „„; adică 3 caractere, inclusiv un spațiu, nu doar „„. – Matt DowleRețineți că orice valoare diferită de 0 este considerată de către R. Prin urmare, dacă intenționați să testați dacă este mai mic decât , puteți scrie care nu va avertiza sau va da eroare și va părea să funcționeze bine. Va fi doar când , totuși. – Matt DowleDacă interziceți și folosiți atunci este greu de argumentat că o etapă suplimentară de nu este necesară. nu are nevoie de un astfel de . – Matt Dowle39De ce să-ți rănești ochii și degetul cu dacă poți folosi ? În 99,99% din cazuri este în regulă. Uneori ai nevoie de totuși, ceea ce este o altă istorie. – FernandoAccentul pus pe <- este poate unul dintre motivele penibile pentru lipsa += și -=. -. ChrisSteve Pitchers

este echivalent cu , deoarece operatorii de atribuire „grupează” de la dreapta la stânga, ceea ce funcționează. Adică: atribuiți 5 la , lăsând numărul 5; și apoi atribui acel 5 la .

Acest lucru nu este același lucru cu , care nu funcționează! Adică: atribuiți valoarea lui la , lăsând valoarea lui ; și apoi atribuiți 5 la, umm…, ce anume?

Atunci când amestecați diferitele tipuri de operatori de atribuire, se leagă mai strâns decât . Deci este interpretat ca , care este cazul care are sens.

Din păcate, este interpretat ca , ceea ce reprezintă cazul care nu funcționează!

A se vedea și pentru regulile de precedență (legare) și de grupare.

Da, așa cum se spune în răspunsul lui Konrad Rudolph este deasupra lui în tabelul de precedență, ceea ce înseamnă va fi executat primul. Deci, ar trebui să fie executat ca . – Nick Dong@Nick Dong Da, într-adevăr. În mod util, tabelul de precedență a operatorilor este documentat fără ambiguitate în Sintaxa {base}. – Steve PitchersAaron a părăsit Stack Overflow

Conform lui John Chambers, operatorul este permis doar la „nivelul superior”, ceea ce înseamnă că nu este permis în structuri de control precum , ceea ce face ca următoarea eroare de programare să fie ilegală.

După cum scrie el, „Nepermiterea noii forme de atribuire [=] în expresiile de control evită erorile de programare (cum ar fi exemplul de mai sus) care sunt mai probabile cu operatorul egal decât cu alte atribuiri S.”

Puteți reuși să faceți acest lucru dacă este „izolat de structura logică înconjurătoare, prin paranteze sau o pereche suplimentară de paranteze”, astfel ar funcționa.

A se vedea http://developer.r-project.org/equalAssign.html

Este o eroare comună, este aproape întotdeauna în locul lui. – Aaron a părăsit Stack Overflow15Ah, da, am trecut cu vederea că ai spus „eroare de programare”. De fapt, este o veste bună că acest lucru provoacă o eroare. Și un motiv bun pentru a prefera ca atribuire în locul lui ! – Steve PitchersDa, este bine că acest lucru provoacă o eroare, deși eu trag o lecție diferită despre ce să prefer; aleg să folosesc cât mai puțin posibil, deoarece și arată atât de asemănător. – Aaron a părăsit Stack OverflowModul în care este prezentat acest exemplu mi se pare atât de ciudat. aruncă o eroare, ajutându-mă să găsesc și să corectez o eroare. nu aruncă o eroare și este foarte confuz. – Gregor ThomasAdică, un într-adevăr verificator de erori foarte util ar fi aruncat o eroare acolo și ar fi spus „ai un cod inutil care va returna întotdeauna valoarea valoare, ai vrut să-l scrii în acest fel?”, dar asta ar putea fi un vis imposibil… – TylerHHaim Evgi

Operatorii și atribuie în mediul în care sunt evaluați. Operatorul poate fi utilizat oriunde, în timp ce operatorul este permis doar la nivelul superior (de exemplu, în expresia completă tastată la promptul de comandă) sau ca una dintre subexpresiile dintr-o listă de expresii între paranteze.

Cred că „nivel superior” înseamnă la nivelul declarației, mai degrabă decât la nivelul expresiei. Așadar, în sine este o declarație; în ar fi o expresie și nu este validă. Pentru a fi clar, acest lucru nu are nimic de-a face cu faptul că vă aflați în mediul global sau nu. – Steve PitchersAceasta: „operatorul = este permis doar la nivelul superior” este o neînțelegere larg răspândită și complet greșită. – Konrad RudolphAcest lucru nu este adevărat – de exemplu, acest lucru funcționează, chiar dacă atribuirea nu este o expresie completă: – Pavel MinaevPentru a clarifica comentariile lui KonradRudolph și PavelMinaev, cred că este prea puternic pentru a spune că este complet greșit, dar există o excepție, și anume atunci când este „izolat de structura logică înconjurătoare, prin paranteze sau o pereche suplimentară de paranteze”. – Aaron a plecat de la Stack OverflowSau în , , …. – Moody_MudskipperDenis Rasulev

Acest lucru poate contribui și el la înțelegerea diferenței dintre acești doi operatori:

Pentru primul element, R are valori atribuite și un nume propriu, în timp ce numele celui de-al doilea element arată puțin ciudat.

R versiunea 3.3.2 (2016-10-31); macOS Sierra 10.12.1

puteți da o explicație mai detaliată a motivului pentru care se întâmplă acest lucru/ce se întâmplă aici? (indiciu: încearcă să utilizeze numele variabilei furnizate ca nume al elementului din cadrul de date) – – Ben BolkerMă gândeam doar că ar putea fi vorba de un bug? Și dacă da, cum și unde îl raportez? – Denis Rasulevnu este un bug. Am încercat să fac aluzie la răspuns în comentariul meu de mai sus. Atunci când se stabilește numele elementului, R va utiliza echivalentul lui . – Ben Bolker (Programare, R, Operator De Atribuire, R Faq)
7
ggplot adaugă o linie la dispersie (Programare, R, Ggplot2) 2