Advertisement
Guest User

Untitled

a guest
Dec 20th, 2014
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.18 KB | None | 0 0
  1.  
  2. generuj <- function(klasy, mu, fname, n)
  3. {
  4. length_k <- length(klasy)
  5. stopifnot(is.character(klasy),length_k>=1)
  6. stopifnot(is.numeric(mu), length_k==length(mu))
  7. stopifnot(is.numeric(n),is.double(n),length(n)==1,n%%1==0)
  8. stopifnot(is.character(fname),length(fname)==1)
  9.  
  10.  
  11.  
  12. # zmienic nazwe do_pliku
  13. do_pliku <- paste("\"klasa\"","\"wartosc\"",collapse='', sep=',')
  14. f <- file(fname, encoding = "latin2", 'w')
  15. writeLines(do_pliku, f)
  16.  
  17.  
  18. i<-1
  19. while(i<=n)
  20. {
  21. ktory <- sample(length_k,1)
  22. wartosc <- rnorm(1,mean=mu[ktory], sd=1)
  23. czesc_1 <- paste('"',klasy[ktory],'"')
  24. do_pliku <- paste(czesc_1,wartosc, sep=',')
  25. writeLines(do_pliku, f)
  26. i<-i+1
  27. }
  28. close(f)
  29.  
  30.  
  31. }
  32.  
  33. podsumuj<-function(fname){
  34. library("stringi")
  35. stopifnot(is.character(fname),length(fname)==1)
  36.  
  37. #wektor na nazwy klas, zakladam że klas bedzie co najwyzej 100
  38. nazwy<-character(100)
  39. liczba_klas<-0 #liczba klas
  40. #wektor na suma wartosci dla klas:
  41. wartosci<-numeric(100)
  42. #wektorr na liczbe obserwacji w klasach:
  43. ile<-numeric(100)
  44.  
  45.  
  46. f<-file(fname,encoding="latin2",open="r")
  47. # wczytuje naglowek
  48. naglowek <- readLines(f, n=1)
  49.  
  50. while (length(wiersze<-readLines(f,n=100))>0){
  51. #liczba wczytanych wiersza ( w ostatnim obrocie petli
  52. #moze byc mniejsza)
  53. m<-length(wiersze)
  54. # odzdzielenie slow
  55. w<-stri_extract_all_words(wiersze)
  56. #slowa <- stri_extract_all_words(wiersze)
  57. for (i in 1:m){
  58. klasa<-w[[i]][[1]]
  59. wartosc<-w[[i]][[2]]
  60. wartosc<-as.numeric(wartosc)
  61. #sprawdzamy czy klasa juz byla wczesniej wczytana:
  62. j<-which(nazwy==klasa)
  63. if (length(j)==0){
  64. liczba_klas<-liczba_klas+1
  65. wartosci[liczba_klas]=wartosc
  66. ile[liczba_klas]=1
  67. nazwy[liczba_klas]=klasa
  68. } else{
  69. wartosci[j]<-wartosci[j]+wartosc
  70. ile[j]<-ile[j]+1
  71. }
  72. }
  73. }
  74. wartosci<-wartosci[1:liczba_klas]/ile[1:liczba_klas]
  75. names(wartosci)<-nazwy[1:liczba_klas]
  76.  
  77.  
  78. close(f)
  79. wartosci
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement