Harika bir R tekrarlanabilir ├Ârne─či nas─▒l yap─▒l─▒r?


Al─▒nan cevaba git


Meslekta┼člar─▒n─▒zla performans─▒ tart─▒┼č─▒rken, ├Â─čretirken, bir hata raporu g├Ânderirken veya posta listelerinde ve burada Y─▒─č─▒n Ta┼čmas─▒ ile ilgili rehberlik ararken, tekrarlanabilir bir ├Ârnek s─▒k├ža sorulur ve her zaman yard─▒mc─▒ olur.

M├╝kemmel bir ├Ârnek olu┼čturmak i├žin ipu├žlar─▒n─▒z nelerdir? Veri yap─▒lar─▒n─▒ r'den bir metin bi├žiminde nas─▒l yap─▒┼čt─▒r─▒rs─▒n─▒z ? Ba┼čka hangi bilgileri eklemelisiniz?

Ek olarak orada di─čer hileler kullanarak misiniz dput() , dump() yoksa structure() ? Ne zaman eklemelisin library() veya require() ifadeler? Hangi kelimeleri sakl─▒d─▒r gerekti─či bir ka├ž─▒n─▒n, ek olarak c , df , data vb?

─░nsan nas─▒l b├╝y├╝k yapar r tekrarlanabilir ├Ârnek?


2474









Cevap say─▒s─▒n─▒ say: 23






Bir asgari tekrarlanabilir ├Ârnek a┼ča─č─▒daki ├Â─čelerden olu┼čur:

  • hatay─▒ yeniden olu┼čturmak i├žin gerekli olan minimum veri k├╝mesi
  • Verilen veri setinde ├žal─▒┼čt─▒r─▒labilen hatay─▒ yeniden olu┼čturmak i├žin gerekli olan minimum ├žal─▒┼čt─▒r─▒labilir kod.
  • Kullan─▒lan paketler, R s├╝r├╝m├╝ ve ├žal─▒┼čt─▒r─▒ld─▒─č─▒ sistem hakk─▒nda gerekli bilgiler.
  • rastgele s├╝re├žler durumunda, set.seed() tekrarlanabilirlik i├žin bir tohum (set )

├ľnemli not: ├ç─▒kt─▒ set.seed() R> 3.6.0 ve ├Ânceki s├╝r├╝mler aras─▒nda farkl─▒l─▒k g├Âsterir. Rastgele i┼člem i├žin hangi R s├╝r├╝m├╝n├╝ kulland─▒─č─▒n─▒z─▒ belirtin.

Kullan─▒lan i┼člevlerin yard─▒m dosyalar─▒ndaki ├Ârneklere bakmak genellikle yararl─▒ olur. Genel olarak, orada verilen t├╝m kodlar asgari d├╝zeyde tekrarlanabilir bir ├Ârne─čin gereksinimlerini kar┼č─▒lar: veri sa─član─▒r, minimum kod sa─član─▒r ve her ┼čey ├žal─▒┼čt─▒r─▒labilirdir.

Minimal bir veri k├╝mesi ├╝retmek

├ço─ču durumda, bu sadece baz─▒ de─čerlere sahip bir vekt├Âr / veri ├žer├ževesi sa─člayarak kolayca yap─▒labilir. Veya ├žo─ču paketle birlikte verilen yerle┼čik veri k├╝melerinden birini kullanabilirsiniz.
Yerle┼čik veri setlerinin kapsaml─▒ bir listesi ile g├Âr├╝lebilir library(help = "datasets") . Her veri k├╝mesinin k─▒sa bir a├ž─▒klamas─▒ vard─▒r ve ├Ârne─čin ?mtcars 'mtcar'lar─▒n listedeki veri k├╝melerinden biri oldu─ču yerlerde daha fazla bilgi edinilebilir . Di─čer paketler ek veri setleri i├žerebilir.

Bir vekt├Âr yapmak kolayd─▒r. Bazen buna biraz rasgelelik eklemek gerekir ve bunu yapmak i├žin ├žok say─▒da fonksiyon vard─▒r. sample() Bir vekt├Âr├╝ randomize edebilir veya sadece birka├ž de─čere sahip rastgele bir vekt├Âr verebilir. letters alfabeyi i├žeren faydal─▒ bir vekt├Ârd├╝r. Bu fakt├Âr yapmak i├žin kullan─▒labilir.

Birka├ž ├Ârnek:

  • rasgele de─čerler: x <- rnorm(10) normal da─č─▒l─▒m x <- runif(10) i├žin, d├╝zg├╝n da─č─▒l─▒m i├žin, ...
  • baz─▒ de─čerlerin x <- sample(1:10) ge├žirgenli─či : 1:10 vekt├Âr├╝ i├žin rasgele s─▒rada.
  • rastgele bir fakt├Âr: x <- sample(letters[1:4], 20, replace = TRUE)

Matrisler i├žin matrix() , ├Ârne─čin kullanabilirsiniz :

 matrix(1:10, ncol = 2)
 

Veri ├žer├ževeleri yapmak kullan─▒larak yap─▒labilir data.frame() . Bir ki┼či veri ├žer├ževesindeki giri┼čleri adland─▒rmaya ve a┼č─▒r─▒ karma┼č─▒k hale getirmemeye dikkat etmelidir.

Bir ├Ârnek :

 set.seed(1)
Data <- data.frame(
    X = sample(1:10),
    Y = sample(c("yes", "no"), 10, replace = TRUE)
)
 

Baz─▒ sorular i├žin ├Âzel formatlar gerekebilir. Bu, bir sa─članan herhangi birini kullanabilirsiniz as.someType : fonksiyonlar as.factor , as.Date , as.xts vekt├Âr ve / veya veri ├žer├ževesi hileler ile birlikte, ... Bunlar.

Verilerinizi kopyalay─▒n

Bu ipu├žlar─▒n─▒ kullanarak olu┼čturmakta zorlanacak baz─▒ verileriniz varsa, ├Ârne─čin head() , subset() veya dizinleri kullanarak her zaman orijinal verilerinizin bir alt k├╝mesini yapabilirsiniz . Ard─▒ndan, ├Ârne─čin kullan─▒n. dput() bize derhal R'ye konabilecek bir ┼čey vermek i├žin:

 > dput(head(iris,4))
structure(list(Sepal.Length = c(5.1, 4.9, 4.7, 4.6), Sepal.Width = c(3.5, 
3, 3.2, 3.1), Petal.Length = c(1.4, 1.4, 1.3, 1.5), Petal.Width = c(0.2, 
0.2, 0.2, 0.2), Species = structure(c(1L, 1L, 1L, 1L), .Label = c("setosa", 
"versicolor", "virginica"), class = "factor")), .Names = c("Sepal.Length", 
"Sepal.Width", "Petal.Length", "Petal.Width", "Species"), row.names = c(NA, 
4L), class = "data.frame")
 

Veri ├žer├ževenizde ├žok d├╝zeyli bir fakt├Âr varsa, verileriniz dput alt k├╝mesinde bulunmasalar bile t├╝m olas─▒ fakt├Âr seviyelerini listeleyece─činden ├ž─▒k─▒┼č hantal olabilir. Bu sorunu ├ž├Âzmek i├žin droplevels() i┼člevi kullanabilirsiniz . A┼ča─č─▒da, t├╝rlerin sadece bir seviye ile nas─▒l bir fakt├Âr oldu─čuna dikkat edin:

 > dput(droplevels(head(iris, 4)))
structure(list(Sepal.Length = c(5.1, 4.9, 4.7, 4.6), Sepal.Width = c(3.5, 
3, 3.2, 3.1), Petal.Length = c(1.4, 1.4, 1.3, 1.5), Petal.Width = c(0.2, 
0.2, 0.2, 0.2), Species = structure(c(1L, 1L, 1L, 1L), .Label = "setosa",
class = "factor")), .Names = c("Sepal.Length", "Sepal.Width", 
"Petal.Length", "Petal.Width", "Species"), row.names = c(NA, 
4L), class = "data.frame")
 

Bunun i├žin bir ba┼čka uyar─▒ dput , anahtarlanm─▒┼č data.table nesneler i├žin veya ondan grupland─▒r─▒lm─▒┼č tbl_df (s─▒n─▒f grouped_df ) i├žin ├žal─▒┼čmad─▒─č─▒d─▒r dplyr . Bu durumlarda, payla┼č─▒mdan ├Ânce d├╝zenli bir veri ├žer├ževesine d├Ân├╝┼čt├╝rebilirsiniz dput(as.data.frame(my_data)) ,.

En k├Ât├╝ durum senaryosunda, a┼ča─č─▒daki text parametreyi kullanarak okunabilecek bir metin g├Âsterimi verebilirsiniz read.table :

 zz <- "Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa"

Data <- read.table(text=zz, header = TRUE)
 

Minimum kod ├╝retme

Bu kolay k─▒sm─▒ olmal─▒ ama ├žo─ču zaman de─čil. Yapmaman─▒z gereken ┼čey:

  • her t├╝r veri d├Ân├╝┼č├╝m├╝n├╝ ekleyin. Sa─članan verilerin zaten do─čru bi├žimde oldu─čundan emin olun (tabii ki sorun de─čilse)
  • Hata veren bir fonksiyonun tamam─▒n─▒ / kodunu kopyala-yap─▒┼čt─▒r. ─░lk ├Ânce, hangi sat─▒rlar─▒n tam olarak hatayla sonu├žland─▒─č─▒n─▒ bulmaya ├žal─▒┼č─▒n. ├ço─ču zaman sorunun kendinizin ne oldu─čunu bulamayacaks─▒n─▒z.

Yapman─▒z gereken ┼čey:

  • E─čer herhangi bir (kullanarak kullan─▒rsan─▒z paketleri kullan─▒lmas─▒ gerekti─čini eklemek library() )
  • ba─člant─▒lar─▒ a├žarsan─▒z veya dosyalar olu┼čturursan─▒z, kapatmak i├žin baz─▒ kodlar ekleyin veya dosyalar─▒ silin (kullanarak unlink() )
  • se├ženekleri de─či┼čtirirseniz, kodun orijinallerine geri d├Ând├╝r├╝lecek bir ifade i├žerdi─činden emin olun. (├Ârn. op <- par(mfrow=c(1,2)) ...some code... par(op) )
  • kodun ├žal─▒┼čt─▒r─▒labilir oldu─čundan emin olmak i├žin kodunuzu yeni, bo┼č bir R oturumunda ├žal─▒┼čt─▒r─▒n. ─░nsanlar, verilerinizi ve kodunuzu konsolda yaln─▒zca kopyalay─▒p yap─▒┼čt─▒rabilmeli ve sahip olduklar─▒n─▒z─▒n ayn─▒s─▒n─▒ alabilmelidir.

Ekstra bilgi ver

├ço─ču durumda, sadece R s├╝r├╝m├╝ ve i┼čletim sistemi yeterli olacakt─▒r. Paketlerle ├žat─▒┼čma ├ž─▒kt─▒─č─▒nda, ├ž─▒kt─▒s─▒n─▒ vermek sessionInfo() ger├žekten yard─▒mc─▒ olabilir. Di─čer uygulamalara ba─člant─▒lardan bahsederken (ODBC veya ba┼čka herhangi bir ┼čey yoluyla olabilir), bunlardan biri i├žin s├╝r├╝m numaralar─▒ ve m├╝mk├╝nse kurulum i├žin gerekli bilgiler de sa─članmal─▒d─▒r.

R'yi R Studio'da kullan─▒yorsan─▒z rstudioapi::versionInfo() , RStudio s├╝r├╝m├╝n├╝z├╝ bildirmek i├žin yararl─▒ olabilir.

Belirli bir pakette sorun ya┼č─▒yorsan─▒z, paketin s├╝r├╝m├╝n├╝ ├ž─▒kt─▒ vererek vermek isteyebilirsiniz packageVersion("name of the package") .


1647







(─░┼čte size tekrarlanabilir bir ├Ârnek yazma tavsiyem . K─▒sa ama tatl─▒ k─▒lmaya ├žal─▒┼čt─▒m)

Tekrarlanabilir bir ├Ârnek nas─▒l yaz─▒l─▒r?

Tekrar ├╝retilebilir bir ├Ârnek sunuyorsan─▒z, R sorununuzla ilgili daha iyi yard─▒m alman─▒z muhtemeldir. Tekrar ├╝retilebilir bir ├Ârnek, ba┼čka birinin R kodunu kopyalay─▒p yap─▒┼čt─▒rarak sorununuzu yeniden yaratmas─▒na izin verir.

├ľrne─činizi yeniden ├╝retilebilir hale getirmek i├žin eklemeniz gereken d├Ârt ┼čey vard─▒r: gerekli paketler, veriler, kod ve R ortam─▒n─▒z─▒n a├ž─▒klamas─▒.

  • Paketler beti─čin en ├╝st├╝ne y├╝klenmelidir, bu nedenle ├Ârne─čin hangisinin ihtiya├ž duydu─čunu g├Ârmek kolayd─▒r.

  • Verileri bir e-postaya veya Y─▒─č─▒n Ta┼čmas─▒ sorusuna dahil etmenin en kolay yolu dput() , yeniden olu┼čturmak i├žin R kodu olu┼čturmakt─▒r. ├ľrne─čin, mtcars R'deki veri k├╝mesini yeniden olu┼čturmak i├žin a┼ča─č─▒daki ad─▒mlar─▒ uygular─▒m:

    1. dput(mtcars) R de ko┼č
    2. Çıktıyı kopyala
    3. Tekrarlanabilir beti─čimde mtcars <- sonra yap─▒┼čt─▒r─▒n.
  • Kodunuzun ba┼čkalar─▒n─▒n okumas─▒ i├žin kolay olmas─▒n─▒ sa─člamak i├žin biraz zaman harcay─▒n :

    • bo┼čluk kulland─▒─č─▒n─▒zdan ve de─či┼čken adlar─▒n─▒z─▒n k─▒sa, fakat bilgilendirici oldu─čundan emin olun.

    • Sorununuzun nerede oldu─čunu belirtmek i├žin yorum kullan─▒n.

    • Sorunla ilgili olmayan her ┼čeyi kald─▒rmak i├žin elinizden geleni yap─▒n.
      Kodunuz k─▒sald─▒k├ža, anla┼č─▒lmas─▒ kolayla┼č─▒r.

  • sessionInfo() Kodunuzun yorumuna ├ž─▒kt─▒s─▒n─▒ ekleyin . Bu, R ortam─▒n─▒z─▒ ├Âzetler ve g├╝ncel olmayan bir paket kullan─▒p kullanmad─▒─č─▒n─▒z─▒ kontrol etmenizi kolayla┼čt─▒r─▒r.

Yeni bir R oturumu ba┼člatarak ve komut dosyan─▒z─▒ yap─▒┼čt─▒rarak ger├žekten yeniden ├╝retilebilir bir ├Ârnek olu┼čturdu─čunuzu kontrol edebilirsiniz.

T├╝m kodunuzu bir e-postaya koymadan ├Ânce, onu Gist github'a koymay─▒ d├╝┼č├╝n├╝n . Kodunuza g├╝zel bir s├Âzdizimi vurgusu verecek ve e-posta sistemi taraf─▒ndan y├Ânetilecek herhangi bir ┼čey i├žin endi┼čelenmenize gerek yok.


575







┼×ahsen ben "bir" astar─▒ tercih ederim. ├çizgiler boyunca bir ┼čeyler:

 my.df <- data.frame(col1 = sample(c(1,2), 10, replace = TRUE),
        col2 = as.factor(sample(10)), col3 = letters[1:10],
        col4 = sample(c(TRUE, FALSE), 10, replace = TRUE))
my.list <- list(list1 = my.df, list2 = my.df[3], list3 = letters)
 

Veri yap─▒s─▒, tam bir s├Âzel yap─▒ de─čil, yazar─▒n problemi fikrini taklit etmelidir. De─či┼čkenler kendi de─či┼čkenlerimin veya tanr─▒ yasaklayan i┼člevlerin ├╝zerine yazmad─▒─č─▒ i├žin ger├žekten minnettar─▒m df .

Alternatif olarak, biri birka├ž k├Â┼čeyi kesebilir ve ├Ânceden var olan bir veri setine i┼čaret edebilir:

 library(vegan)
data(varespec)
ord <- metaMDS(varespec)
 

Kullanmakta olabilece─činiz ├Âzel paketlerden bahsetmeyi unutmay─▒n.

Daha b├╝y├╝k nesnelerde bir ┼čey g├Âstermeye ├žal─▒┼č─▒yorsan─▒z, deneyebilirsiniz

 my.df2 <- data.frame(a = sample(10e6), b = sample(letters, 10e6, replace = TRUE))
 

raster Paket arac─▒l─▒─č─▒yla mekansal verilerle ├žal─▒┼č─▒yorsan─▒z , rastgele veriler olu┼čturabilirsiniz. Paket ske├žinde pek ├žok ├Ârnek bulunabilir, ancak i┼čte k├╝├ž├╝k bir k├╝l├že.

 library(raster)
r1 <- r2 <- r3 <- raster(nrow=10, ncol=10)
values(r1) <- runif(ncell(r1))
values(r2) <- runif(ncell(r2))
values(r3) <- runif(ncell(r3))
s <- stack(r1, r2, r3)
 

Uyguland─▒─č─▒ gibi uzamsal bir nesneye ihtiyac─▒n─▒z varsa sp , "spatial" paketlerinde harici dosyalar (ESRI shapefile gibi) arac─▒l─▒─č─▒yla baz─▒ veri k├╝melerini alabilirsiniz (G├Ârev G├Âr├╝n├╝mlerindeki Spatial g├Âr├╝n├╝m├╝ne bak─▒n).

 library(rgdal)
ogrDrivers()
dsn <- system.file("vectors", package = "rgdal")[1]
ogrListLayers(dsn)
ogrInfo(dsn=dsn, layer="cities")
cities <- readOGR(dsn=dsn, layer="cities")
 

298







Bu yaz─▒dan ilham alarak, ┼čimdi
reproduce(<mydata>) StackOverflow'a g├Ândermem gerekti─činde kullan─▒┼čl─▒ bir i┼člev kullan─▒yorum .


HIZLI TAL─░MATLAR

E─čer myData ├žo─čaltmak i├žin nesnenin ad─▒d─▒r, Ar a┼ča─č─▒daki ├žal─▒┼čt─▒r─▒n:

 install.packages("devtools")
library(devtools)
source_url("https://raw.github.com/rsaporta/pubR/gitbranch/reproduce.R")

reproduce(myData)
 

Detaylar:

Bu fonksiyon a┼ča─č─▒dakilere ak─▒ll─▒ bir sar─▒c─▒d─▒r dput ve ┼čunlar─▒ yapar:

  • otomatik olarak b├╝y├╝k bir veri k├╝mesini ├Ârnekler (b├╝y├╝kl├╝k ve s─▒n─▒fa g├Âre. ├ľrneklem b├╝y├╝kl├╝─č├╝ ayarlanabilir)
  • bir dput ├ž─▒kt─▒ olu┼čturur
  • hangi s├╝tunlar─▒n d─▒┼ča aktar─▒laca─č─▒n─▒ belirlemenizi sa─člar
  • objName <- ... Kolayca kopyalan─▒p yap─▒┼čt─▒r─▒labildi─či i├žin ├Ân├╝ne ekler , ancak ...
  • Bir mac ├╝zerinde ├žal─▒┼č─▒yorsa, ├ž─▒kt─▒ otomatik olarak panoya kopyalan─▒r, b├Âylece onu kolayca ├žal─▒┼čt─▒rabilir ve daha sonra sorunuza yap─▒┼čt─▒rabilirsiniz.

Kaynak burada mevcuttur:


├ľrnek:

 # sample data
DF <- data.frame(id=rep(LETTERS, each=4)[1:100], replicate(100, sample(1001, 100)), Class=sample(c("Yes", "No"), 100, TRUE))
 

DF, yakla┼č─▒k 100 x 102'dir. 10 sat─▒r ve bir ka├ž belirli s├╝tun ├Ârneklemek istiyorum.

 reproduce(DF, cols=c("id", "X1", "X73", "Class"))  # I could also specify the column number. 
 

A┼ča─č─▒daki ├ž─▒kt─▒y─▒ verir:

 This is what the sample looks like: 

    id  X1 X73 Class
1    A 266 960   Yes
2    A 373 315    No            Notice the selection split 
3    A 573 208    No           (which can be turned off)
4    A 907 850   Yes
5    B 202  46   Yes         
6    B 895 969   Yes   <~~~ 70 % of selection is from the top rows
7    B 940 928    No
98   Y 371 171   Yes          
99   Y 733 364   Yes   <~~~ 30 % of selection is from the bottom rows.  
100  Y 546 641    No        


    ==X==============================================================X==
         Copy+Paste this part. (If on a Mac, it is already copied!)
    ==X==============================================================X==

 DF <- structure(list(id = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 25L, 25L, 25L), .Label = c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y"), class = "factor"), X1 = c(266L, 373L, 573L, 907L, 202L, 895L, 940L, 371L, 733L, 546L), X73 = c(960L, 315L, 208L, 850L, 46L, 969L, 928L, 171L, 364L, 641L), Class = structure(c(2L, 1L, 1L, 2L, 2L, 2L, 1L, 2L, 2L, 1L), .Label = c("No", "Yes"), class = "factor")), .Names = c("id", "X1", "X73", "Class"), class = "data.frame", row.names = c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 98L, 99L, 100L)) 

    ==X==============================================================X==
 

Ayr─▒ca, ├ž─▒kt─▒n─▒n tamam─▒n─▒n, uzun bir k─▒y─▒lm─▒┼č sat─▒r paragraf─▒na de─čil, tek bir uzun sat─▒rda oldu─čuna dikkat edin. Bu, SO soru mesajlar─▒n─▒ okumay─▒ ve kopyala + yap─▒┼čt─▒rmay─▒ daha kolay hale getirir.


Ekim 2013 G├╝ncellemesi:

Art─▒k ka├ž sat─▒r metin ├ž─▒kt─▒s─▒n─▒n al─▒naca─č─▒n─▒ belirtebilirsiniz (yani, StackOverflow'a ne yap─▒┼čt─▒raca─č─▒n─▒z─▒). Bunun i├žin lines.out=n arg├╝man─▒ kullan─▒n . ├ľrnek:

reproduce(DF, cols=c(1:3, 17, 23), lines.out=7) verim:

     ==X==============================================================X==
         Copy+Paste this part. (If on a Mac, it is already copied!)
    ==X==============================================================X==

 DF <- structure(list(id = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L, 25L,25L, 25L), .Label
      = c("A", "B", "C", "D", "E", "F", "G", "H","I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U","V", "W", "X", "Y"), class = "factor"),
      X1 = c(809L, 81L, 862L,747L, 224L, 721L, 310L, 53L, 853L, 642L),
      X2 = c(926L, 409L,825L, 702L, 803L, 63L, 319L, 941L, 598L, 830L),
      X16 = c(447L,164L, 8L, 775L, 471L, 196L, 30L, 420L, 47L, 327L),
      X22 = c(335L,164L, 503L, 407L, 662L, 139L, 111L, 721L, 340L, 178L)), .Names = c("id","X1",
      "X2", "X16", "X22"), class = "data.frame", row.names = c(1L,2L, 3L, 4L, 5L, 6L, 7L, 98L, 99L, 100L))

    ==X==============================================================X==
 

271







─░┼čte g├╝zel bir rehber .

En ├Ânemli nokta ┼čudur: Sorunun ne oldu─čunu g├Ârmek i├žin ├žal─▒┼čt─▒rabilece─čimiz k├╝├ž├╝k bir kod par├žas─▒ yapt─▒─č─▒n─▒zdan emin olun . Bunun i├žin yararl─▒ bir i┼člevdir dput() , ancak ├žok b├╝y├╝k verileriniz varsa, k├╝├ž├╝k bir ├Ârnek veri k├╝mesi yapmak veya yaln─▒zca ilk 10 sat─▒r─▒ kullanmak isteyebilirsiniz.

D├ťZENLE:

Ayr─▒ca sorunun nerede oldu─čunu tespit etti─činizden emin olun. ├ľrnekte "Sat─▒r 200 var bir hata var" ifadesinin bulundu─ču bir R beti─či olmamal─▒d─▒r. R (Sevdi─čim browser() ) ve GoogleÔÇÖda hata ay─▒klama ara├žlar─▒n─▒ kullan─▒yorsan─▒z, sorunun nerede oldu─čunu ger├žekten tespit edebilmeli ve ayn─▒ ┼čeyin yanl─▒┼č gitti─či ├Ânemsiz bir ├Ârne─či yeniden ├╝retebilmelisiniz.


190







R-help e-posta listesi, veri ├╝retme ├Ârne─či de dahil olmak ├╝zere hem soru sorma hem de cevaplamay─▒ kapsayan bir kay─▒t k─▒lavuzuna sahiptir:

├ľrnekler: Bazen birinin ├žal─▒┼čt─▒rabilece─či k├╝├ž├╝k bir ├Ârnek verilmesine yard─▒mc─▒ olur. ├ľrne─čin:

A┼ča─č─▒daki gibi bir matris x varsa:

   > x <- matrix(1:8, nrow=4, ncol=2,
                dimnames=list(c("A","B","C","D"), c("x","y"))
  > x
    x y
  A 1 5
  B 2 6
  C 3 7
  D 4 8
  >
 

8 sat─▒rl─▒ ve 'row', 'col' ve 'value' ad─▒nda ├╝├ž s├╝tuna sahip bir dataframe'e nas─▒l d├Ân├╝┼čt├╝rebilirim?

   > x.df
     row col value
  1    A   x      1
 

...
(Cevab─▒n hangi olabilece─či:

   > x.df <- reshape(data.frame(row=rownames(x), x), direction="long",
                    varying=list(colnames(x)), times=colnames(x),
                    v.names="value", timevar="col", idvar="row")
 

)

S├Âzc├╝k k├╝├ž├╝k ├Âzellikle ├Ânemlidir. Asgari d├╝zeyde tekrarlanabilir bir ├Ârne─či hedeflemelisiniz , bu da veri ve kodun sorunu a├ž─▒klamak i├žin m├╝mk├╝n oldu─čunca basit olmas─▒ gerekti─či anlam─▒na gelir.

EDIT: G├╝zel kod, ├žirkin koddan daha kolay okunur. Bir stil rehberi kullan─▒n .


163







R.2.14'ten beri (san─▒r─▒m) veri metni g├Âsterimini do─črudan read.table :

  df <- read.table(header=TRUE, 
  text="Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa
2          4.9         3.0          1.4         0.2  setosa
3          4.7         3.2          1.3         0.2  setosa
4          4.6         3.1          1.5         0.2  setosa
5          5.0         3.6          1.4         0.2  setosa
6          5.4         3.9          1.7         0.4  setosa
") 
 

158







Bazen sorun ger├žekten verilerin daha k├╝├ž├╝k bir par├žas─▒, kadar u─čra┼č─▒rsan u─čra┼č hi├žbir madde ile tekrarlanabilir de─čildir ve bunu vermedi sentetik veri setleri ├╝retilen g├Âstermek i├žin yararl─▒d─▒r ra─čmen (sentetik verilerle olmaz de─čil sorunu yeniden ├ž├╝nk├╝, baz─▒ hipotezleri d─▒┼člar).

  • Verileri webÔÇÖde bir yere g├Ândermek ve bir URL sa─člamak gerekli olabilir.
  • Veriler genel olarak kamuya a├ž─▒klanam─▒yor ancak payla┼č─▒labiliyorsa, ilgilenen taraflara e-posta g├Ândermeyi ├Ânerebilirsiniz (ancak bu, ├žal─▒┼čacak olan ki┼čilerin say─▒s─▒n─▒ azaltacak olsa da) ├╝st├╝nde).
  • Bunu hen├╝z g├Ârmedim, ├ž├╝nk├╝ verilerini serbest b─▒rakamayan insanlar herhangi bir ┼čekilde yay─▒nlama konusunda hassast─▒rlar, ancak baz─▒ durumlarda yeterince anonimle┼čtirilmi┼č / kar─▒┼čt─▒r─▒lm─▒┼č / bozulmu┼čsa biraz veri g├Ânderebilirler. bir ┼čekilde.

Bunlardan herhangi birini yapam─▒yorsan─▒z, muhtemelen sorununuzu ├ž├Âzmek i├žin bir dan─▒┼čman kiralaman─▒z gerekir ...

d├╝zenleme : Anonimle┼čtirme / ┼čifreleme i├žin iki faydal─▒ SO soru:


143







┼×imdiye kadar verilen cevaplar, ├žo─čalt─▒labilirlik k─▒sm─▒ i├žin a├ž─▒k├ža m├╝kemmel. Bu sadece, tekrarlanabilir bir ├Ârne─čin bir sorunun tek bile┼čeni olamayaca─č─▒n─▒ ve olmamas─▒n─▒ a├ž─▒kl─▒─ča kavu┼čturmak i├žindir. Nas─▒l g├Âr├╝nmesini istedi─činizi ve sorununuzun d─▒┼č hatlar─▒n─▒ a├ž─▒klamay─▒ unutmay─▒n, sadece oraya nas─▒l ula┼čmaya ├žal─▒┼čt─▒─č─▒n─▒z─▒ de─čil. Kod yeterli de─čil; ayr─▒ca kelimelere ihtiyac─▒n var.

─░┼čte ne yapmaktan ka├ž─▒n─▒lmas─▒ gerekti─činin tekrarlanabilen bir ├Ârne─či (ger├žek bir ├Ârnekten ├žizilmi┼č, masum olan─▒ korumak i├žin isimler de─či┼čtirildi):


A┼ča─č─▒daki ├Ârnek veri ve sorun ile kar┼č─▒la┼čt─▒─č─▒m i┼člevin bir par├žas─▒.

 code
code
code
code
code (40 or so lines of it)
 

Bunu nas─▒l ba┼čarabilirim ?



133







Yukar─▒da belirtilmemi┼č olan bir R ├Ârne─či olu┼čturmak i├žin ├žok kolay ve etkili bir yolum var. ─░lk ├Ânce yap─▒n─▒z─▒ tan─▒mlayabilirsiniz. ├ľrne─čin,

 mydata <- data.frame(a=character(0), b=numeric(0),  c=numeric(0), d=numeric(0))

>fix(mydata)
 


'Fix' komutunu ├žal─▒┼čt─▒rd─▒─č─▒n─▒zda bu a├ž─▒l─▒r kutuyu alacaks─▒n─▒z.

Ard─▒ndan verilerinizi manuel olarak girebilirsiniz. Bu, b├╝y├╝klerden ziyade k├╝├ž├╝k ├Ârnekler i├žin etkilidir.


120







Verilerinizi h─▒zl─▒ bir ┼čekilde olu┼čturmak dput i├žin verileri panoya kopyalayabilir (bir par├žas─▒n─▒) ve a┼ča─č─▒dakileri R'de ├žal─▒┼čt─▒rabilirsiniz:

Excel'deki veriler i├žin:

 dput(read.table("clipboard",sep="\t",header=TRUE))
 

txt dosyas─▒ndaki veriler i├žin:

 dput(read.table("clipboard",sep="",header=TRUE))
 

sep Gerekirse ikincisini de─či┼čtirebilirsiniz . Bu, yaln─▒zca verilerinizin elbette panoya olmas─▒ durumunda i┼če yarar.


117







Kurallar─▒:


Sorular─▒n─▒z─▒ yaparken ana hedefiniz, okurlar─▒n sistemlerindeki sorununuzu anlamas─▒n─▒ ve yeniden ├╝retmesini m├╝mk├╝n oldu─čunca kolayla┼čt─▒rmak olmal─▒d─▒r. B├Âyle yaparak:

  1. Giri┼č verilerini sa─člay─▒n
  2. Beklenen ├ž─▒kt─▒y─▒ sa─čla
  3. Sorununuzu k─▒saca a├ž─▒klay─▒n
    • 20'den fazla metin + kod sat─▒r─▒n─▒z varsa, muhtemelen geri d├Ân├╝p basitle┼čtirebilirsiniz.
    • Problemi / hatay─▒ korurken kodunuzu m├╝mk├╝n oldu─čunca basitle┼čtirin

Bu biraz ├žal─▒┼čmay─▒ gerektiriyor ancak adil bir takas gibi g├Âr├╝n├╝yor ├ž├╝nk├╝ sizden ba┼čkalar─▒ndan sizin i├žin ├žal─▒┼čmas─▒n─▒ istiyorsunuz.

Veri sa─člama:


Dahili Veri K├╝meleri

┼×imdiye kadarki en iyi se├ženek , yerle┼čik veri k├╝melerine g├╝venmektir. Bu, ba┼čkalar─▒n─▒n probleminiz ├╝zerinde ├žal─▒┼čmas─▒n─▒ ├žok kolayla┼čt─▒r─▒r. Tip data() veri sizin i├žin kullan─▒labilir ne oldu─čunu g├Ârmek i├žin istemi Ar. Baz─▒ klasik ├Ârnekler:

  • iris
  • mtcars
  • ggplot2::diamonds (d─▒┼č paket, ancak hemen hemen herkes var)

Sorununuza uygun veri setlerini nas─▒l bulaca─č─▒n─▒z─▒ ├Â─črenmek i├žin bu SO QA'ya bak─▒n .

Yerle┼čik veri setlerini kullanmak i├žin probleminizi tekrar ifade edebiliyorsan─▒z, iyi cevaplar (ve en y├╝ksek oylar) elde etme olas─▒l─▒─č─▒n─▒z ├žok daha y├╝ksektir.

Kendi Kendine ├ťretilen Veri

E─čer probleminiz mevcut veri setlerinde temsil edilmeyen bir veri tipine ├žok ├Âzelse, o zaman probleminizin tezah├╝r etti─či m├╝mk├╝n olan en k├╝├ž├╝k veri setini ├╝reten R kodunu sa─člay─▒n. ├ľrne─čin

 set.seed(1)  # important to make random data reproducible
myData <- data.frame(a=sample(letters[1:5], 20, rep=T), b=runif(20))
 

┼×imdi sorumu cevaplamaya ├žal─▒┼čan biri bu iki sat─▒r─▒ kopyalay─▒p yap─▒┼čt─▒rabilir ve derhal sorun ├╝zerinde ├žal─▒┼čmaya ba┼člayabilir.

dput

Bir ┼čekilde son ├žare , kullanabilirsiniz dput R kodu (├Ârne─čin bir veri nesnesini d├Ân├╝┼čt├╝rmek i├žin dput(myData) ). "Son ├žare" diyorum, ├ž├╝nk├╝ ├ž─▒kt─▒s─▒ dput genellikle olduk├ža hantald─▒r, kopyala-yap─▒┼čt─▒rmaya can s─▒k─▒c─▒d─▒r ve sorunuzun geri kalan─▒n─▒ gizlemektedir.

Beklenen ├ç─▒kt─▒y─▒ Sa─člay─▒n:


Birisi bir keresinde ┼č├Âyle dedi:

Beklenen ├ž─▒kt─▒n─▒n bir resmi 1000 kelimeye bedeldir

- ├žok bilge bir insan

"Bu sonucu almay─▒ umuyorum" gibi bir ┼čey ekleyebilirsiniz:

    cyl   mean.hp
1:   6 122.28571
2:   4  82.63636
3:   8 209.21429
 

Sorunuza g├Âre, insanlar ne yapmaya ├žal─▒┼čt─▒─č─▒n─▒z─▒ ├žabucak anlama konusunda ├žok daha muhtemeldir. Beklenen sonu├ž b├╝y├╝k ve hantal ise, muhtemelen sorununuzu nas─▒l basitle┼čtirece─činiz konusunda yeterince d├╝┼č├╝nmediniz (bir sonraki b├Âl├╝me bak─▒n).

Sorunu K─▒saca A├ž─▒kla


Yap─▒lacak en ├Ânemli ┼čey, sorunuzu sormadan ├Ânce sorununuzu m├╝mk├╝n oldu─čunca basitle┼čtirmektir. Sorunu, yerle┼čik veri k├╝meleriyle ├žal─▒┼čmak ├╝zere yeniden ├žer├ževelemek, bu konuda ├žok yard─▒mc─▒ olacakt─▒r. Ayr─▒ca ├žo─ču zaman basitle┼čtirme s├╝recinden ge├žerek kendi sorununuzu ├ž├Âzece─činizi de g├Âreceksiniz.

─░┼čte baz─▒ iyi soru ├Ârnekleri:

Her iki durumda da, kullan─▒c─▒n─▒n sorunlar─▒ neredeyse kesinlikle sa─člad─▒klar─▒ basit ├Ârneklerle de─čildir. Aksine, problemlerinin do─čas─▒n─▒ soyutlad─▒lar ve bunu sorular─▒n─▒ sormak i├žin basit bir veri setine uygulad─▒lar.

Neden Bu Soruya Ba┼čka Bir Cevap?


Bu cevap, en iyi uygulama oldu─čunu d├╝┼č├╝nd├╝─č├╝m ┼čeye odaklan─▒yor: yerle┼čik veri setlerini kullanmak ve sonu├ž olarak ne bekledi─činizi minimal bir ┼čekilde sa─člamak. En belirgin cevaplar di─čer y├Ânlere odaklan─▒r. Bu cevab─▒n herhangi bir ├Âne ├ž─▒kmas─▒n─▒ beklemiyorum; Bu burada sadece b├Âylece acemi sorulara yorumlarda ba─člant─▒ olabilir.


112







Tekrarlanabilir kod yard─▒m almak i├žin anahtard─▒r. Ancak, verilerinin bir k─▒sm─▒n─▒ bile yap─▒┼čt─▒rma konusunda ┼č├╝pheli olabilecek bir├žok kullan─▒c─▒ var. ├ľrne─čin, hassas verilerle veya bir ara┼čt─▒rma makalesinde kullan─▒lmak ├╝zere toplanan orijinal verilerle ├žal─▒┼č─▒yor olabilirler. Herhangi bir nedenle, verileri halka a├ž─▒k olarak yap─▒┼čt─▒rmadan ├Ânce "deforme etmek" i├žin kullan─▒┼čl─▒ bir fonksiyona sahip olman─▒n iyi olaca─č─▒n─▒ d├╝┼č├╝nd├╝m. anonymize Paketinden i┼člevi SciencesPo ├žok sa├žma, ama benim i├žin birlikte g├╝zel ├žal─▒┼č─▒yor dput fonksiyonu.

 install.packages("SciencesPo")

dt <- data.frame(
    Z = sample(LETTERS,10),
    X = sample(1:10),
    Y = sample(c("yes", "no"), 10, replace = TRUE)
)

> dt
   Z  X   Y
1  D  8  no
2  T  1 yes
3  J  7  no
4  K  6  no
5  U  2  no
6  A 10 yes
7  Y  5  no
8  M  9 yes
9  X  4 yes
10 Z  3  no
 

Sonra anonimle┼čtiririm:

 > anonymize(dt)
     Z    X  Y
1   b2  2.5 c1
2   b6 -4.5 c2
3   b3  1.5 c1
4   b4  0.5 c1
5   b7 -3.5 c1
6   b1  4.5 c2
7   b9 -0.5 c1
8   b5  3.5 c2
9   b8 -1.5 c2
10 b10 -2.5 c1
 

Ayr─▒ca anonimle┼čtirme ve dput komutunu uygulamadan ├Ânce veriler yerine birka├ž de─či┼čken ├Ârneklemek isteyebilirsiniz.

     # sample two variables without replacement
> anonymize(sample.df(dt,5,vars=c("Y","X")))
   Y    X
1 a1 -0.4
2 a1  0.6
3 a2 -2.4
4 a1 -1.4
5 a2  3.6
 

110







Genellikle bir ├Ârnek i├žin baz─▒ verilere ihtiya├ž duyars─▒n─▒z, ancak kesin verilerinizi g├Ândermek istemezsiniz. Var olan data.frame dosyas─▒n─▒ kurulu k├╝t├╝phanede kullanmak i├žin, onu almak i├žin data komutunu kullan─▒n.

├ľrne─čin,

 data(mtcars)
 

ve sonra problemi yap

 names(mtcars)
your problem demostrated on the mtcars data set
 

99







Kullanarak beti─če kolayca girilemeyecek b├╝y├╝k dput() veri k├╝meniz varsa , verilerinizi pastebin'e g├Ânderin ve bunlar─▒ kullanarak y├╝kleyin read.table :

 d <- read.table("http://pastebin.com/raw.php?i=m1ZJuKLH")
 

@Henrik'ten ilham al─▒nd─▒ .


90







Yeniden ├╝retilebilir verileri h─▒zl─▒ bir ┼čekilde payla┼čma ihtiyac─▒n─▒ gidermek i├žin wakefield paketini geli┼čtiriyorum , bazen dput daha k├╝├ž├╝k veri k├╝meleri i├žin iyi ├žal─▒┼č─▒yor ancak ele ald─▒─č─▒m─▒z sorunlar─▒n ├žo─ču daha b├╝y├╝k, bu kadar b├╝y├╝k bir veri setini payla┼čmak dput pratik de─čil.

Hakk─▒nda:

wakefield , kullan─▒c─▒n─▒n verileri yeniden ├╝retmek i├žin minimum kodu payla┼čmas─▒na izin verir. Kullan─▒c─▒ ayarlar n (sat─▒r say─▒s─▒) ve verilerde (cinsiyet, ya┼č, gelir vb. Gibi) ger├žek olan─▒ taklit eden herhangi bir say─▒da ├Ânceden ayarlanm─▒┼č de─či┼čken i┼člevini (┼ču anda 70 vard─▒r) belirtir.

Kurulum:

┼×u anda (2015-06-11), wakefield bir GitHub paketidir, ancak birim testleri yaz─▒ld─▒ktan sonra sonunda CRAN'a gidecektir. H─▒zl─▒ bir ┼čekilde kurmak i├žin ┼čunlar─▒ kullan─▒n:

 if (!require("pacman")) install.packages("pacman")
pacman::p_load_gh("trinker/wakefield")
 

├ľrnek:

─░┼čte bir ├Ârnek:

 r_data_frame(
    n = 500,
    id,
    race,
    age,
    sex,
    hour,
    iq,
    height,
    died
)
 

Bu ├╝retir:

     ID  Race Age    Sex     Hour  IQ Height  Died
1  001 White  33   Male 00:00:00 104     74  TRUE
2  002 White  24   Male 00:00:00  78     69 FALSE
3  003 Asian  34 Female 00:00:00 113     66  TRUE
4  004 White  22   Male 00:00:00 124     73  TRUE
5  005 White  25 Female 00:00:00  95     72  TRUE
6  006 White  26 Female 00:00:00 104     69  TRUE
7  007 Black  30 Female 00:00:00 111     71 FALSE
8  008 Black  29 Female 00:00:00 100     64  TRUE
9  009 Asian  25   Male 00:30:00 106     70 FALSE
10 010 White  27   Male 00:30:00 121     68 FALSE
.. ...   ... ...    ...      ... ...    ...   ...
 

87







factor Verilerinizde yeniden ├╝retilebilir yapmak istedi─činiz bir veya daha fazla de─či┼čken varsa dput(head(mydata)) , eklemeyi d├╝┼č├╝n├╝n droplevels , b├Âylece simge dput durumuna k├╝├ž├╝lt├╝lm├╝┼č veri setinde bulunmayan fakt├Âr d├╝zeylerinin ├ž─▒kt─▒n─▒za dahil edilmemesi i├žin ├Ârne─či minimal yap─▒n :

 dput(droplevels(head(mydata)))
 

70







Bir http://old.r-fiddle.org/ linkinin bir problemi payla┼čman─▒n ├žok temiz bir yolu olup olmad─▒─č─▒n─▒ merak ediyorum . Gibi benzersiz bir kimlik al─▒r ve hatta SO i├žine g├Âmme hakk─▒nda d├╝┼č├╝nebilir.


61







L├╝tfen konsol ├ž─▒kt─▒lar─▒n─▒z─▒ ┼ču ┼čekilde yap─▒┼čt─▒rmay─▒n:

 If I have a matrix x as follows:
> x <- matrix(1:8, nrow=4, ncol=2,
            dimnames=list(c("A","B","C","D"), c("x","y")))
> x
  x y
A 1 5
B 2 6
C 3 7
D 4 8
>

How can I turn it into a dataframe with 8 rows, and three
columns named `row`, `col`, and `value`, which have the
dimension names as the values of `row` and `col`, like this:
> x.df
    row col value
1    A   x      1
...
(To which the answer might be:
> x.df <- reshape(data.frame(row=rownames(x), x), direction="long",
+                varying=list(colnames(x)), times=colnames(x),
+                v.names="value", timevar="col", idvar="row")
)
 

Do─črudan kopyalay─▒p yap─▒┼čt─▒ram─▒yoruz.

Sorular ve cevaplar d├╝zg├╝n tekrarlanabilir hale getirmek i├žin, kald─▒rmaya ├žal─▒┼č─▒rsan─▒z + & > g├Ândermeden ├Ânce ve koyun # b├Âyle ├ž─▒k─▒┼člar ve yorumlar i├žin:

 #If I have a matrix x as follows:
x <- matrix(1:8, nrow=4, ncol=2,
            dimnames=list(c("A","B","C","D"), c("x","y")))
x
#  x y
#A 1 5
#B 2 6
#C 3 7
#D 4 8

# How can I turn it into a dataframe with 8 rows, and three
# columns named `row`, `col`, and `value`, which have the
# dimension names as the values of `row` and `col`, like this:

#x.df
#    row col value
#1    A   x      1
#...
#To which the answer might be:

x.df <- reshape(data.frame(row=rownames(x), x), direction="long",
                varying=list(colnames(x)), times=colnames(x),
                v.names="value", timevar="col", idvar="row")
 

Bir ┼čey daha, belirli bir paketten herhangi bir i┼člevi kulland─▒ysan─▒z, o k├╝t├╝phaneden bahsedin.


44







Bunu reprex kullanarak yapabilirsiniz .

Gibi mt1022 kaydetti , "... asgari, tekrarlanabilir ├Ârne─čini ├╝retmek i├žin iyi bir pakettir 'reprex' dan tidyverse ".

Tidyverse g├Âre :

"Reprex" in amac─▒, sorunlu kodunuzu ba┼čkalar─▒n─▒n ├žal─▒┼čt─▒rabilece─či ve ac─▒n─▒z─▒ hissedece─či ┼čekilde paketlemektir.

D├╝zenli web sitesinde bir ├Ârnek verilmi┼čtir .

 library(reprex)
y <- 1:4
mean(y)
reprex() 
 

Bunun tekrarlanabilir bir ├Ârnek olu┼čturman─▒n en basit yolu oldu─čunu d├╝┼č├╝n├╝yorum .


31







├çok ilgin├ž buldu─čum yukar─▒daki cevaplar─▒n d─▒┼č─▒nda, burada tart─▒┼č─▒ld─▒─č─▒ gibi bazen ├žok kolay olabilir: - R ─░LE YARDIM ALMAK ─░├ç─░N M─░N─░AL B─░R ├ťREME ├ľRNE─×─░ NASIL YAPILIR

Rastgele bir vekt├Âr yapman─▒n bir├žok yolu vard─▒r . R'de 2 ondal─▒k basama─ča yuvarlanan rasgele de─čerlerle veya R'de rasgele matrisle 100 say─▒ vekt├Âr├╝ olu┼čturma

 mydf1<- matrix(rnorm(20),nrow=20,ncol=5)
 

Bazen, boyut vb. ├çe┼čitli nedenlerden dolay─▒ belirli bir veriyi payla┼čman─▒n ├žok zor oldu─čunu unutmay─▒n. Ancak, yukar─▒daki t├╝m cevaplar, ├žo─čalt─▒labilir bir veri ├Ârne─či olu┼čturmak istedi─činde d├╝┼č├╝nmek ve kullanmak i├žin ├žok ├Ânemlidir. Ancak, verileri as─▒l kadar temsili yapmak i├žin (OP'nin orijinal verileri payla┼čamamas─▒ durumunda), (├Ârne─čin mydf1 olarak adland─▒r─▒rsak) veri ├Ârne─čine baz─▒ bilgiler eklemenin iyi olaca─č─▒n─▒ unutmay─▒n.

 class(mydf1)
# this shows the type of the data you have 
dim(mydf1)
# this shows the dimension of your data
 

Ayr─▒ca, veri yap─▒lar─▒ olabilen bir verinin t├╝r├╝, uzunlu─ču ve ├Âznitelikleri de bilinmelidir.http://adv-r.had.co.nz/Data-structures.html

 #found based on the following 
typeof(mydf1), what it is.
length(mydf1), how many elements it contains.
attributes(mydf1), additional arbitrary metadata.

#If you cannot share your original data, you can str it and give an idea about the structure of your data
head(str(mydf1))
 

31







─░┼čte ├Ânerilerimden baz─▒lar─▒:

  • Varsay─▒lan R veri k├╝melerini kullanmay─▒ deneyin
  • Kendi veri k├╝meniz varsa, bunlar─▒ ekleyin dput , b├Âylece di─čerleri size daha kolay yard─▒mc─▒ olabilir
  • install.package() Ger├žekten gerekli olmad─▒k├ža kullanmay─▒n , sadece kullan─▒rsan─▒z insanlar anlar require veya library
  • ├ľzl├╝ olmaya ├žal─▒┼č─▒n

    • Baz─▒ veri k├╝mesi var
    • ─░htiyac─▒n─▒z olan ├ž─▒kt─▒y─▒ m├╝mk├╝n oldu─čunca basit tan─▒mlamaya ├žal─▒┼č─▒n
    • Soruyu sormadan ├Ânce kendin yap
  • Bir g├Âr├╝nt├╝y├╝ y├╝klemek kolayd─▒r;
  • Ayr─▒ca olabilecek hatalar─▒ da ekleyin

B├╝t├╝n bunlar tekrarlanabilir bir ├Ârne─čin par├žas─▒d─▒r.


27







testthat Ne olaca─č─▒n─▒ bekledi─činizi g├Âstermek i├žin paketteki i┼člevleri kullanmak iyi bir fikirdir . B├Âylece, di─čer insanlar kodunuzu hatas─▒z ├žal─▒┼čana kadar de─či┼čtirebilir. Bu, size yard─▒m etmek isteyenlerin y├╝k├╝n├╝ hafifletmektedir, ├ž├╝nk├╝ metinsel a├ž─▒klaman─▒z─▒n kodunu ├ž├Âzmek zorunda kalmazs─▒n─▒z. ├ľrne─čin

 library(testthat)
# code defining x and y
if (y >= 10) {
    expect_equal(x, 1.23)
} else {
    expect_equal(x, 3.21)
}
 

"x'in 10'a e┼čit ya da onu a┼čan y i├žin 1.23 olaca─č─▒n─▒, ancak ikisinin de sonucunu alamad─▒─č─▒m─▒ d├╝┼č├╝n├╝yorum" dan daha a├ž─▒k. Bu aptal ├Ârnekte bile, kodun kelimelerden daha a├ž─▒k oldu─čunu d├╝┼č├╝n├╝yorum. Kullanma testthat , yard─▒mc─▒n─▒z─▒n zaman kazand─▒ran koda odaklanmas─▒n─▒ sa─člar ve sorununuzu ├ž├Âzmeden ├Ânce sorunu ├ž├Âzd├╝klerini bilmelerini sa─člar.


17



─░lgili yay─▒nlar


Git'in izlenen ancak ┼ču an .gitignore'da olan bir dosyay─▒ ÔÇťunutmas─▒n─▒ÔÇŁ nas─▒l sa─člar?

Listelerden d├╝z bir liste nas─▒l yap─▒l─▒r?

Bir fonksiyon dekorat├Âr├╝ zinciri nas─▒l yap─▒l─▒r?

├ťnite testlerinde yeni, harika testler nas─▒l yaz─▒l─▒r? [kapal─▒]

─░yi tekrarlanabilir panda ├Ârnekleri nas─▒l yap─▒l─▒r

Webpack dev server'─▒n genel olarak eri┼čilebilir olmas─▒ i├žin 80 ve 0.0.0.0 portlar─▒nda ├žal─▒┼čmas─▒n─▒ nas─▒l sa─člar─▒m?

─░Phone ├╝zerinde d├Ân├╝┼č tu┼čunu yapmak nas─▒l klavye kaybolur?

Roxygen2 kullanarak bir ├Ârnek nas─▒l ├žal─▒┼čt─▒r─▒lmaz?

Google Haritalar, API Anahtarlar─▒n─▒ nas─▒l g├╝vence alt─▒na al─▒r? Benzer bir ┼čey nas─▒l yap─▒l─▒r?

─░kili al─▒nt─▒lar─▒ tekli al─▒nt─▒lara d├Ân├╝┼čt├╝rmek i├žin Webstorm'u ÔÇťKaynak Kodunu Yeniden Bi├žimlendirmekÔÇŁ nas─▒l yap─▒l─▒r?

Etiketle ilgili di─čer sorular [r]


var functionName = function () {} vs function functionName () {}

Yerel Git deposunun ba┼člang─▒├žta klonland─▒─č─▒ URLÔÇÖyi nas─▒l belirleyebilirim?

Diziden ArrayList olu┼čtur

Bir klas├Âr├╝n ve t├╝m alt klas├Ârlerinin ve dosyalar─▒n─▒n izinlerini Linux'ta bir ad─▒mda nas─▒l de─či┼čtiririm? [kapal─▒]

Git'teki bir dosyadaki de─či┼čiklikleri nas─▒l izleyebilir ve yok sayabilirim?

Bir dizenin bir say─▒ olup olmad─▒─č─▒n─▒ nas─▒l kontrol ederim?

AngularJS kullanarak taray─▒c─▒ konsolundaki $ kapsam de─či┼čkenine nas─▒l eri┼čebilirim?

Node.js dosyas─▒n─▒ basit bir web sunucusu olarak kullanmak

Bir dizideki son ├Â─čeyi al

Bir hizmetin Android'de ├žal─▒┼č─▒p ├žal─▒┼čmad─▒─č─▒n─▒ nas─▒l kontrol edebilirim?