Skip to content

Instantly share code, notes, and snippets.

@andilabs
Last active December 22, 2015 10:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save andilabs/6457829 to your computer and use it in GitHub Desktop.
Save andilabs/6457829 to your computer and use it in GitHub Desktop.
R generating random data with given distribution
# Andrzej Kostanski adnrzej.kostanski@gmail.com
# sciezka do pliku z danym wejsciowymi
input_path<-"/Users/andi/Desktop/EM-ALGORITHM/r-generowanie/input.csv"
output_path<-"/Users/andi/Desktop/EM-ALGORITHM/r-generowanie/output.csv"
con<-file(input_path)
# n oznacza liczbe wszystkich losowan
n<-readLines(con,1)
close(con)
# rozklady okreslone parametrami tau i mi, oraz pradopodobienstwo ich wyboru
rozklady<-read.csv(input_path,skip=1,header=TRUE)
# losuje n-razy rozklady zgodnie z prawdopodibenstwem ich wystapienia (tau), w liście zapisuję indeksy
idx<-sample(1:nrow(rozklady),size=n,replace=TRUE,prob=rozklady$tau)
# deklarujemy pusty data frame z 2 kolumnami na n wierszy (bardziej efektywnie niz pusty a potem w kazdej iteracji rozszerzac)
output<-data.frame(X = numeric(n), Klasa = character(10), stringsAsFactors=FALSE)
# iterujemy by wylosowac liczby zgodnie z rodzajem rozkladu wylosowanym wczesniej, zapisujemy do outputs otrzymana wartosci i informacje nt klasy rozkladu
for (i in 1:n){
val<-rnorm(1, rozklady[idx[i],]$tau, rozklady[idx[i],]$sigma )
output[i,]<-c(val,LETTERS[idx[i]])
}
# zapis do pliku n par x, klasa
write.csv(output,output_path,row.names=FALSE)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment