R - loop adding points to graph -


i have problem loop in r. have written simple program load spectra, rewrite data separate file, plot them , mark position of peaks. unfortunately when run last loop, outcome strange. data points beeing marked cicrcles. when run commands loop manually ok.

below code (i know "dirty" code, need write simple program understand pass course, , beginner r) , data working with.files

any appreciated. michal

#podaj katalog, w którym są dane. potem skopiuj, wklej już   csv_list=list.files(path=".", pattern="*.csv")              ##wyszukuje pliki z rozszerzeniem ".csv" csv_list <- csv_list[which(csv_list!="tabela.csv")]         ##usuwa z listy plik "tabela.csv" (na wypadek ponownego uruchomienia programu w tym samym katalogu) a=seq(along=csv_list)                                       ##tworzy sekwencję o długości równej liczbie wczytanych plików b=seq(along=csv_list) files=max(a)                                                ##liczba wczytywanych plików (pomoc tworzenia tabeli) file_names=sub(pattern=".csv",replacement="",x=csv_list)    ##usuwa rozszerzenia z nazw plików  ##tworzy tabele na wyniki wyniki bez szumu  tabela=matrix(ncol=files+1,data=rep(1:1867,each=(files+1)))  no_noise=matrix(ncol=files+1,data=rep(1:1867,each=(files+1)))  ##zbiera wyniki z plików w jedną tabelę, szuka wartości minimalnych maksymalnych (do wykresu):  (i in 1:files) {spectra=read.table(csv_list[i],header=false,sep=",",dec=".",skip=1,nrows=1868)          tabela[,1]=spectra$v1         tabela[,i+1]=spectra$v2         a[i]=max(spectra$v2)         b[i]=min(spectra$v2)}          ##odszumia dane poniżej 10*mediana (i in 1:files) {spectra=read.table(csv_list[i],header=false,sep=",",dec=".",skip=1,nrows=1868)          no_noise[,1]=spectra$v1         no_noise[,i+1]=spectra$v2}          (i in 1:files+1){ no_noise[,c(i)][no_noise[,c(i)]< 10*median(tabela[,c(i)])] <- 0}         df=as.data.frame(no_noise)         rm(no_noise)   ##zapisuje tabelkę z liczbami w pliku .csv, separator kolumn ",", nagłowki kolumn nazwy plików  write(c("wawelength",csv_list),file="tabela.csv",ncolumns=files+1, append=true, sep=",") write.table(tabela,file="tabela.csv",append=false,quote=true, sep=",",row.names=false,col.names=false)                         ##rysuje osie dopasowuje skalę wyników; dopasowanie skali -wartości w nawiasie przy xlim, ylim; funkcja kasuje poprzedni wykres  plot(x=0,y=0,xlim=c(min(tabela[,1]),max(tabela[,1])),ylim=c(min(b),max(a)),xlab=expression(paste("raman shift /", cm^-1, "", sep = "")),ylab='absorbance')                             ##rysuje wykresy z tej tabeli z danymi w różnych kolorach z legendą  (i in 1:files) lines(x=tabela[,1],y=tabela[,i+1],type="l",lwd=0.5,col=i) legend("topright",legend=file_names,lwd=0.5,col=c(1:files))  ##funkcje szukające maksimów peaks <- function(series, span = 3, do.pad = true) { if((span <- as.integer(span)) %% 2 != 1) stop("'span' must odd") s1 <- 1:1 + (s <- span %/% 2) if(span == 1) return(rep.int(true, length(series))) z <- embed(series, span) v <- apply(z[,s1] > z[, -s1, drop=false], 1, all) if(do.pad) {     pad <- rep.int(false, s)     c(pad, v, pad) } else v }   ##wyszukanie maksimów w zaimportowanych plikach m=as.matrix(df)  (i in 2:files+1)    {     d.peaks <- peaks(m[,c(i)], 5)     peak_idx <- which(d.peaks)     points(m[,c(i)] ~ m[,c(1)], data=m[peak_idx, ], col = i-1, cex = 1.5)     } rm(m)  dev.copy(png,'graph.png') dev.off() 


Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -