Funktsioonid R-i programmeerimises näitega

⚡ Nutikas kokkuvõte

R-i funktsioonid pakendavad käskude komplekti ühe nime alla, nii et korduv ülesanne käivitub üheainsa kõnega. Sisseehitatud matemaatika ja statistika abimehed, kasutaja määratletud funktsioonid, keskkonna scopingja tingimuslikke argumente käsitletakse siin koos töönäidetega.

  • 🔘 Funktsiooni anatoomia: Funktsioon ühendab nime, valikulise argumentide loendi, sisu ja valikulise tagastusväärtuse.
  • 🧮 Sisseehitatud katvus: R pakub lisaks matemaatika- ja statistikafunktsioonidele ka üldiseid abifunktsioone, näiteks diff() ja length().
  • 📐 Korduvkasutatav ümberskaleerimine: Funktsioon normalize() muudab kopeerimise ja kleepimise abil skaleerimise ploki üheks korduvkasutatavaks väljakutseks.
  • 🧭 Keskkonnareeglid: Iga kutse avab lokaalse keskkonna ja R lahendab nime sisemisest definitsioonist väljapoole.
  • 🧪 Tingimuslik loogika: if/else haru funktsiooni split_data() sees tagastab kas treeningkomplekti või testkomplekti.
  • 🛠️ Nimetamise praktika: Kasutaja määratletud funktsiooni nimetamine sisseehitatud funktsioonist erinevalt väldib maskeerimist ja segadust tekitavaid vigu.

Funktsioonid R-programmeerimises

Mis on R-i funktsioon?

A funktsioon, programmeerimiskeskkonnas, on käskude komplekt. Programmeerija loob funktsiooni, mida vältida sama ülesande kordaminevõi vähendage keerukus.

Funktsioon peaks olema

  • kirjutatud kindla ülesande täitmiseks
  • võib sisaldada argumente või mitte
  • sisaldavad keha
  • võib tagastada ühe või mitu väärtust või mitte.

Funktsiooni üldine lähenemisviis on kasutada argumendiosa kui sisendite, söödake keha osa ja lõpuks tagastada an väljund. Funktsiooni süntaks on järgmine:

function (arglist)  {
  #Function body
}

R olulised sisseehitatud funktsioonid

R-s on palju sisseehitatud funktsioone. R sobitab teie sisendparameetrid oma funktsiooni argumentidega kas väärtuse või asukoha järgi, seejärel käivitab funktsiooni keha. Funktsiooni argumentidel võivad olla vaikeväärtused: kui te neid argumente ei määra, võtab R vaikeväärtuse.
märkused:
Funktsiooni lähtekoodi on võimalik näha, käivitades konsoolis funktsiooni enda nime.

Typing Sulgudeta funktsiooninimi kuvab lähtekoodi, nagu allolev konsool näitab.

R-konsool kuvab sisseehitatud funktsiooni lähtekoodi

Näeme töös kolme funktsioonirühma

  • Üldine funktsioon
  • Matemaatika funktsioon
  • Statistiline funktsioon

Üldised funktsioonid

Oleme juba tuttavad selliste üldiste funktsioonidega nagu cbind(), rbind(), range(), sort ()ja order(). Igal neist funktsioonidest on kindel ülesanne ja need võtavad väljundi tagastamiseks argumente. Järgnevalt on toodud olulised funktsioonid, mida tuleb teada -

funktsioon diff().

Kui töötate edasi aegridad, peate sarja paigal hoidma, võttes nende lag väärtused. statsionaarne protsess võimaldab ajas konstantset keskmist, dispersiooni ja autokorrelatsiooni. See parandab peamiselt aegridade ennustamist. Seda saab teha funktsiooniga diff(). Saame luua juhusliku aegridade andmestiku koos trendiga ja seejärel kasutada funktsiooni diff() seeria statsionaarsuse tagamiseks. Funktsioon diff() aktsepteerib ühte argumenti, vektorit, ja tagastab sobiva mahajäänud ja itereeritud erinevuse.

märkusedTihti peame looma juhuslikke andmeid, aga õppimiseks ja võrdlemiseks tahame, et numbrid oleksid eri masinates identsed. Selleks, et kõik genereeriksid samu andmeid, kasutame funktsiooni set.seed() suvaliste väärtustega 123. set.seed() fikseerib pseudojuhuslike arvude generaatori alguspunkti, nii et iga masin genereerib sama jada. Ilma funktsiooni set.seed() tagastab iga käivitamine erineva jada.

set.seed(123)
## Create the data
x = rnorm(1000)
ts <- cumsum(x)
## Stationary the serie
diff_ts <- diff(ts)
par(mfrow=c(1,2))
## Plot the series
plot(ts, type='l')
plot(diff(ts), type='l')

Allolevatel kahel paneelil on algne kumulatiivne aegrida paigutatud diferentseeritud aegrea kõrvale, mis nüüd kõigub konstantse keskmise ümber.

Algne kumulatiivne rida diferentseeritud statsionaarse rea kõrval

pikkus() funktsioon

Paljudel juhtudel soovime teada vektori pikkust arvutamiseks või for-tsüklis kasutamiseks. Funktsioon length() loendab vektori x ridade arvu. Järgmised koodid impordivad autode andmestiku ja tagastavad ridade arvu.

märkused: length() tagastab vektori elementide arvu. Kui funktsioon edastatakse vektorile maatriks või andmeraami puhul tagastatakse veergude arv.

dt <- cars
## number columns
length(dt)

Väljund:

## [1] 1
## number rows
length(dt[,1])

Väljund:

## [1] 50

Matemaatilised funktsioonid

Lisaks üldistele abifunktsioonidele on R-il rida matemaatilisi funktsioone, mis opereerivad vektoriga element elemendi haaval.

Operator Kirjeldus
abs (x) Võtab x absoluutväärtuse
log(x,base=y) Võtab x-i logaritmi alusega y; kui alust pole määratud, tagastab naturaallogaritmi
exp(x) Tagastab x eksponentsiaali
sqrt (x) Tagastab x ruutjuure
faktoriaal(x) Tagastab x faktoriaali (x!)
# sequence of number from 44 to 55 both including incremented by 1
x_vector <- seq(45,55, by = 1)
#logarithm
log(x_vector)

Väljund:

##  [1] 3.806662 3.828641 3.850148 3.871201 3.891820 3.912023 3.931826
##  [8] 3.951244 3.970292 3.988984 4.007333
#exponential
exp(x_vector)
#squared root
sqrt(x_vector)

Väljund:

##  [1] 6.708204 6.782330 6.855655 6.928203 7.000000 7.071068 7.141428
##  [8] 7.211103 7.280110 7.348469 7.416198
#factorial
factorial(x_vector)

Väljund:

##  [1] 1.196222e+56 5.502622e+57 2.586232e+59 1.241392e+61 6.082819e+62
##  [6] 3.041409e+64 1.551119e+66 8.065818e+67 4.274883e+69 2.308437e+71
## [11] 1.269640e+73

Statistilised funktsioonid

Kui matemaatilised funktsioonid teisendavad väärtusi, siis statistilised funktsioonid summeerivad need. R-i standardinstallatsioon sisaldab laia valikut statistilisi funktsioone. Selles õpetuses vaatleme lühidalt neist kõige olulisemaid.

Põhilised statistilised funktsioonid

Operator Kirjeldus
keskmine (x) x keskmine
mediaan(x) Mediaan x
var(x) x dispersioon
sd(x) Standardhälve x
skaala (x) Standardskoorid (z-skoorid) x-st
kvantiil(x) X kvartiilid
kokkuvõte(x) X-i kokkuvõte: keskmine, min, max jne.
speed <- dt$speed
speed
# Mean speed of cars dataset
mean(speed)

Väljund:

## [1] 15.4
# Median speed of cars dataset
median(speed)

Väljund:

## [1] 15
# Variance speed of cars dataset
var(speed)

Väljund:

## [1] 27.95918
# Standard deviation speed of cars dataset
sd(speed)

Väljund:

## [1] 5.287644
# Standardize vector speed of cars dataset		
head(scale(speed), 5)

Väljund:

##           [,1]
## [1,] -2.155969
## [2,] -2.155969
## [3,] -1.588609
## [4,] -1.588609
## [5,] -1.399489
# Quantile speed of cars dataset
quantile(speed)

Väljund:

##   0%  25%  50%  75% 100%
##    4   12   15   19   25
# Summary speed of cars dataset
summary(speed)

Väljund:

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
##     4.0    12.0    15.0    15.4    19.0    25.0

Siiani oleme õppinud palju R sisseehitatud funktsioone.

märkusedOlge ettevaatlik argumendi klass, st numbriline, Boole'i ​​väärtus või string. Näiteks kui meil on vaja edastada stringi väärtus, peame stringi jutumärkidesse panema: „ABC”.

Kirjutage funktsioon R-i

Mõnel juhul peame kirjutama oma funktsiooni, kuna peame täitma konkreetse ülesande ja valmisfunktsiooni pole olemas. Kasutaja defineeritud funktsioon hõlmab järgmist: nimi, argumendid ja keha.

function.name <- function(arguments) 
{
    computations on the arguments	
    some other code
}		

märkused: Hea tava on anda kasutaja määratud funktsioonile nimi, mis erineb sisseehitatud funktsioonist. See väldib segadust.

Üks argument funktsioon

Järgmises lõigus defineerime lihtsa ruudufunktsiooni. Funktsioon aktsepteerib väärtuse ja tagastab väärtuse ruudu.

square_function<- function(n) 
{
  # compute the square of integer `n`
  n^2
}  
# calling the function and passing value 4
square_function(4)

Code Selgitus

  • Funktsiooni nimi on ruut_funktsioon; seda võib nimetada kuidas iganes tahame.
  • See saab argumendi "n". Meie ei täpsustanud muutuja tüüpi, et kasutaja saaks edastada täisarvu, vektori või maatriksi
  • Funktsioon võtab sisendi “n” ja tagastab sisendi ruudu. Kui olete funktsiooni kasutamise lõpetanud, saame selle eemaldada funktsiooniga rm().

# pärast funktsiooni loomist

rm(square_function)
square_function

Konsoolis näeme veateadet :Error: objekti 'ruutfunktsiooni' ei leitud, mis annab teada, et funktsiooni ei eksisteeri.

Keskkonna SCOping

R-is on keskkond on objektide kogum, näiteks funktsioonid, muutujad, andmeraamid jne.

R avab keskkonna iga kord, kui RStudio käivitatakse.

Saadaval on tipptasemel keskkond globaalses keskkonnas, mida nimetatakse R_GlobalEnv'iks. Ja meil on olemas kohalik keskkond.

Saame loetleda praeguse keskkonna sisu.

ls(environment())

Väljund

## [1] "diff_ts"         "dt"              "speed"           "square_function"
## [5] "ts"              "x"               "x_vector"

Näete kõiki R_GlobalEnvis loodud muutujaid ja funktsioone.

Ülaltoodud loend varieerub teie jaoks olenevalt ajaloolisest koodist, mida RStudios käivitate.

Pange tähele, et n, funktsiooni ruutfunktsioon argument ei ole selles globaalses keskkonnas.

Iga funktsiooni jaoks luuakse uus keskkond. Ülaltoodud näites loob funktsioon square_function() uue keskkonna funktsiooni sees. globaalses keskkonnas.

Et selgitada erinevust globaalne ja kohalik keskkonda, uurime järgmist näidet

Need funktsioonid võtavad argumendina väärtuse x ja lisavad selle y-le, mis määratleb funktsiooni väljaspool ja sees

Funktsioon f, mis kasutab globaalses keskkonnas defineeritud muutujat y

Funktsioon f tagastab väljundi 15. Seda seetõttu, et y on defineeritud globaalses keskkonnas. Kõiki globaalses keskkonnas määratletud muutujaid saab kasutada lokaalselt. Muutuja y väärtus on 10 kõigi funktsioonikutsete ajal ja see on igal ajal juurdepääsetav.

Vaatame, mis juhtub, kui muutuja y on funktsiooni sees defineeritud.

Peame enne selle koodi käivitamist käsuga rm r ära jätma "y".

Funktsioon f, mis defineerib y omaenda lokaalses keskkonnas

Väljund on ka 15, kui kutsume f(5), kuid tagastab veateate, kui proovime printida väärtust y. Muutuja y ei ole globaalses keskkonnas.

Lõpuks kasutab R funktsiooni kehas liikumiseks uusimat muutuja definitsiooni. Vaatleme järgmist näidet:

R, kasutades funktsiooni põhiosas olevat y-i sisemist definitsiooni

R ignoreerib väljaspool funktsiooni määratletud y-väärtusi, kuna lõime ay-muutuja selgesõnaliselt funktsiooni kehasse.

Mitme argumendi funktsioon

Funktsiooni saab kirjutada rohkem kui ühe argumendiga. Mõelge funktsioonile nimega "time". See on lihtne funktsioon, mis korrutab kaks muutujat.

times <- function(x,y) {
  x*y
	}
times(2,4)

Väljund:

## [1] 8

Millal peaksime funktsiooni kirjutama?

Andmeteadlased peavad tegema palju korduvaid ülesandeid. Enamasti kopeerime ja kleebime koodijuppe korduvalt. Näiteks on enne funktsiooni käivitamist väga soovitatav muutuja normaliseerida. masinõpe algoritm. Muutuja normaliseerimise valem on järgmine:

Valem muutuja normaliseerimiseks

Teame juba, kuidas kasutada R-is funktsioone min() ja max(). Kasutame andmeraami loomiseks tibble teeki. Tibble on seni kõige mugavam funktsioon andmestiku nullist loomiseks.

library(tibble)
# Create a data frame
data_frame <- tibble(  
  c1 = rnorm(50, 5, 1.5), 
  c2 = rnorm(50, 5, 1.5),    
  c3 = rnorm(50, 5, 1.5),    
)

Ülalkirjeldatud funktsiooni arvutamiseks teeme kaks sammu. Esimeses etapis loome muutuja nimega c1_norm, mis on c1 skaleerimise tulemus. Teises etapis kopeerime ja kleebime lihtsalt c1_norm koodi ning muudame seda c2 ja c3 abil.

Funktsiooni üksikasjad veeruga c1:

Nimetaja: : data_frame$c1 -min(data_frame$c1))

Nimetaja: max(data_frame$c1)-min(data_frame$c1))

Seetõttu saame need jagada, et saada veeru c1 normaliseeritud väärtus:

(data_frame$c1 -min(data_frame$c1))/(max(data_frame$c1)-min(data_frame$c1))

Saame luua c1_norm, c2_norm ja c3_norm:

Create c1_norm: rescaling of c1		
data_frame$c1_norm <- (data_frame$c1 -min(data_frame$c1))/(max(data_frame$c1)-min(data_frame$c1))
# show the first five values
head(data_frame$c1_norm, 5)

Väljund:

## [1] 0.3400113 0.4198788 0.8524394 0.4925860 0.5067991

See toimib. Saame kopeerida ja kleepida

data_frame$c1_norm <- (data_frame$c1 -min(data_frame$c1))/(max(data_frame$c1)-min(data_frame$c1))

seejärel muutke c1_norm väärtuseks c2_norm ja c1 väärtuseks c2. Teeme sama, et luua c3_norm

data_frame$c2_norm <- (data_frame$c2 - min(data_frame$c2))/(max(data_frame$c2)-min(data_frame$c2))
data_frame$c3_norm <- (data_frame$c3 - min(data_frame$c3))/(max(data_frame$c3)-min(data_frame$c3))

Muutsime muutujad c1, c2 ja c3 suurepäraselt ümber.

See meetod on aga altid vigadele. Me võime kopeerida ja unustada veeru nime pärast kleepimist muuta. Seetõttu on hea tava kirjutada funktsioon iga kord, kui on vaja sama koodi rohkem kui kaks korda kleepida. Me saame koodi ümber korraldada valemiks ja seda vajadusel kutsuda. Oma funktsiooni kirjutamiseks peame andma:

  • Nimi: normaliseerida.
  • argumentide arv: vajame ainult ühte argumenti, mis on veerg, mida arvutuses kasutame.
  • Keha: see on lihtsalt valem, mille tahame tagastada.

Jätkame samm-sammult, et luua funktsiooni normaliseerimine.

Step 1) Me loome nimetaja, mis on x – min(x). R-is saame nimetaja salvestada sellisesse muutujasse:

nominator <- x-min(x)

Step 2) Me arvutame nimetaja: max(x) – min(x). Me saame korrata 1. sammu ideed ja salvestada arvutuse muutujasse:

denominator <- max(x)-min(x)

Step 3) Teostame jagamise nimetaja ja nimetaja vahel.

normalize <- nominator/denominator

Step 4) Funktsiooni kutsuva väärtuse tagastamiseks peame funktsiooni väljundi saamiseks läbima normalise inside return().

return(normalize)

Step 5) Oleme valmis funktsiooni wrap'i abil kasutamaping kõik kronsteini sees.

normalize <- function(x){
  # step 1: create the nominator
  nominator <- x-min(x)
  # step 2: create the denominator
  denominator <- max(x)-min(x)
  # step 3: divide nominator by denominator
  normalize <- nominator/denominator
  # return the value
  return(normalize)
}

Testime oma funktsiooni muutujaga c1:

normalize(data_frame$c1)

See töötab ideaalselt. Lõime oma esimese funktsiooni.

Funktsioon on korduva ülesande täitmiseks põhjalikum viis. Normaliseerimisvalemit saame kasutada erinevate veergude puhul, nagu allpool näidatud:

data_frame$c1_norm_function <- normalize (data_frame$c1)
data_frame$c2_norm_function <- normalize	(data_frame$c2)
data_frame$c3_norm_function <- normalize	(data_frame$c3)

Kuigi näide on lihtne, saame järeldada valemi võimsust. Ülaltoodud koodi on lihtsam lugeda ja see väldib koodi kleepimisega kaasnevaid vigu.

Funktsioonid koos tingimusega

Funktsioon normalize() teeb alati sama asja. Mõnikord peame funktsiooni lisama tingimusi, et kood saaks tagastada erinevaid väljundeid.

Masinõppe ülesannetes peame andmestiku rongikomplekti ja testkomplekti vahel jagama. Rongikomplekt võimaldab algoritmil andmetest õppida. Meie mudeli toimivuse testimiseks saame jõudlusnäitaja tagastamiseks kasutada testikomplekti. R-il pole funktsiooni kahe andmekogumi loomiseks. Selleks võime kirjutada oma funktsiooni. Meie funktsioon võtab kaks argumenti ja seda nimetatakse split_data(). Idee on lihtne, me korrutame andmekogumi pikkuse (st vaatluste arvu) 0.8-ga. Näiteks kui tahame andmestiku jagada 80/20 ja meie andmestik sisaldab 100 rida, siis meie funktsioon korrutab 0.8*100 = 80. Treeninguandmeteks valitakse 80 rida.

Kasutame õhukvaliteedi andmestikku oma kasutaja määratud funktsiooni testimiseks. Õhukvaliteedi andmestikus on 153 rida. Näeme seda alloleva koodiga:

nrow(airquality)

Väljund:

## [1] 153

Toimime järgmiselt:

split_data <- function(df, train = TRUE)
Arguments:
-df: Define the dataset
-train: Specify if the function returns the train set or test set. By default, set to TRUE

Meie funktsioonil on kaks argumenti. Argumentide rong on Boole'i ​​parameeter. Kui see on seatud väärtusele TRUE, loob meie funktsioon rongiandmestiku, vastasel juhul loob see testandmestiku.

Saame jätkata samamoodi nagu normalize() funktsiooniga. Kirjutame koodi nii, nagu oleks see ühekordne kood, ja seejärel lisame kõik tingimusega funktsiooni sisusse.

Samm 1:

Peame arvutama andmestiku pikkuse. Seda tehakse funktsiooniga nrow(). Nrow tagastab andmestiku ridade koguarvu. Nimetame muutuvat pikkust.

length<- nrow(airquality)
length

Väljund:

## [1] 153

Samm 2:

Me korrutame pikkuse 0.8-ga. See tagastab valitavate ridade arvu. See peaks olema 153 * 0.8 = 122.4

total_row <- length*0.8
total_row

Väljund:

## [1] 122.4

Soovime valida õhukvaliteedi andmestiku 122 rea hulgast 153 rida. Loome loendi, mis sisaldab väärtusi vahemikus 1 kuni total_row. Salvestame tulemuse muutujas nimega split

split <- 1:total_row
split[1:5]

Väljund:

## [1] 1 2 3 4 5

split valib andmekogumist esimesed 122 rida. Näiteks näeme, et meie muutujate jaotus kogub väärtused 1, 2, 3, 4, 5 ja nii edasi. Need väärtused on indeks, kui valime tagastatavad read.

Samm 3:

Peame valima õhukvaliteedi andmestiku read jagatud muutujasse salvestatud väärtuste põhjal. Seda tehakse järgmiselt:

train_df <- airquality[split, ] 
head(train_df)

Väljund:

##[1]    Ozone Solar.R Wind Temp Month Day
##[2]  51    13     137 10.3   76     6  20
##[3]  15    18      65 13.2   58     5  15
##[4]  64    32     236  9.2   81     7   3
##[5]  27    NA      NA  8.0   57     5  27
##[6]  58    NA      47 10.3   73     6  27
##[7]  44    23     148  8.0   82     6  13

Samm 4:

Saame luua testandmestiku, kasutades ülejäänud ridu, 123:153. Seda tehakse spliti ees kasutades.

test_df <- airquality[-split, ] 
head(test_df)

Väljund:

##[1] Ozone Solar.R Wind Temp Month Day
##[2]  123    85     188  6.3   94     8  31
##[3]  124    96     167  6.9   91     9   1
##[4]  125    78     197  5.1   92     9   2
##[5]  126    73     183  2.8   93     9   3
##[6]  127    91     189  4.6   93     9   4
##[7]  128    47      95  7.4   87     9   5

Samm 5:

Me saame luua tingimuse funktsiooni keha sees. Pidage meeles, et rongikomplekti tagastamiseks on meil argumendirong, mille Boole'i ​​väärtus on vaikimisi seatud väärtusele TRUE. Tingimuse loomiseks kasutame if-süntaksit:

  if (train ==TRUE){ 
    train_df <- airquality[split, ] 
      return(train)		
  } else {
    test_df <- airquality[-split, ] 
      return(test)		
  }

See on kõik, me saame funktsiooni kirjutada. Peame ainult muutma õhukvaliteedi df-ks, sest tahame proovida oma funktsiooni mis tahes andmeraam, mitte ainult õhukvaliteet:

split_data <- function(df, train = TRUE){
  length<- nrow(df)
  total_row <- length *0.8
  split <- 1:total_row
  if (train ==TRUE){ 
    train_df <- df[split, ] 
      return(train_df)		
  } else {
    test_df <- df[-split, ] 
      return(test_df)		
  }
}

Proovime oma funktsiooni õhukvaliteedi andmestiku peal. Meil ​​peaks olema üks 122 reaga rongikomplekt ja 31 reaga testkomplekt.

train <- split_data(airquality, train = TRUE)
dim(train)

Väljund:

## [1] 122   6
test <- split_data(airquality, train = FALSE)
dim(test)

Väljund:

## [1] 31  6

KKK

Määrake definitsioonis väärtus, näiteks function(df, train = TRUE). Kui kutsuja selle argumendi välja jätab, kasutab R vaikeväärtust. Vaikimisi väärtusi hinnatakse laiskalt, seega võib üks vaikeväärtus viidata isegi sama funktsiooni teisele argumendile.

Jah. Funktsioon võib ennast kutsuda seni, kuni stop on olemas.ping Tingimus lõpetab ahela – näiteks faktoriaal, mis tagastab 1, kui n saavutab 1. Sügav rekursioon võib jõuda avaldiste pesastamise piirini, seega on iteratsioon sageli turvalisem.

Ei. R tagastab automaatselt viimasena hinnatud avaldise väärtuse, mistõttu square_function() töötab ilma return() funktsioonita. Kasutage return() funktsiooni, kui on vaja varajast väljumist või kui selgesõnaline tulemus muudab funktsiooni loetavamaks.

R leiab vaste esmalt täpse nime järgi, seejärel osalise nime järgi ja lõpuks allesjäänud nime positsiooni järgi. Argumentide selgesõnaline nimetamine, nagu seq(45, 55, by = 1), hoiab väljakutse loetavana ja kaitseb seda juhusliku ümberjärjestamise eest.

Funktsioon, mis luuakse ilma nimeta ja antakse tavaliselt otse funktsioonile sapply() või lapply(). Versioonis R 4.1 lisati lühike kaldkriipsuvorm, seega \(x) x^2 teeb sama tööd kui function(x) x^2 palju väiksema tüpiseerimisega.ping.

Uus definitsioon maskeerib selle keskkonna sisseehitatud versiooni, seega võib length() kutsumine käivitada sinu versiooni baasversiooni asemel. Eemalda koopia rm() abil või vali algusest peale erinev nimi.

Tehisintellekti assistendid koostavad lihtsas inglise keeles kommentaarist funktsioonide skelette, pakuvad välja mõistlikke argumentide vaikeväärtusi ja genereerivad ühikteste. Käivita genereeritud koodi alati reaalsete andmete vastu, sest isegi usutava välimusega R-funktsioon võib vaikselt valesid väärtusi tagastada.

Jah. RStuudio Desktop 2023.09.0 ja uuemad versioonid sisaldavad valikuvõimalust GitHubi koopia integratsioon. See täiendab funktsioonide sisu kommentaarist, kuid vaatab iga soovituse üle, kuna see ei näe teie andmeid.

Võta see postitus kokku järgmiselt: