Hi without knowing what the function does and without some fake data available it is almost impossible to do evaluation.
Few comments you apply some function to all rows of data frame hence think about apply instead for cycle you check NA values, try to look at complete cases your NA check in if clause is rather awkward if not wrong, use is.na() why do you get rid of NA, most R functions can handle them quite smoothly, through their na.action or na.rm options. Regards Petr r-help-boun...@r-project.org napsal dne 02.06.2009 14:35:00: > > Hello, > I want to know what do you think about my function. I know that it isn't > briliant :/ but what do you think? What I should do that my function will be > better? (now is very slow and not ideal, sometimes I also get a mistake!) > > ########## My function ############################################# > dzieci<-transform(dzieci, zywnosc=0) > > zywnoscCalosc<- function( jedzenie, sklep, n1, n2, n3, n4, d1, d2, d3, d4 ) > { > skl <- sklep > wynik <- vector() > wynik <- jedzenie > > ndf <- data.frame(nn1=n1,nn2=n2,nn3=n3,nn4=n4) > ddf <- data.frame(dd1=d1,dd2=d2,dd3=d3,dd4=d4) > > for (i in 1:length(n1)){ > > wekt_n = ndf[i,] > wekt_d = ddf[i,] > > wekt_n_ok = wekt_n[!is.na(wekt_n)] > wekt_n_ok = as.numeric(wekt_n_ok) > wekt_d_ok = wekt_d[!is.na(wekt_d)] > wekt_d_ok = as.numeric(wekt_d_ok) > > dl_n = length(wekt_n_ok) > dl_d = length(wekt_d_ok) > > if (skl[i] %in% NA){ wynik[i]=NA} > > else {wynik[i] = > sum(((1*wekt_n_ok)+(3*wekt_n_ok))/((1*dl_n)+(3*dl_d)))} > } > return (wynik) > } > > ### Call function ### > > dzieci$zywnosc <- zywnoscCalosc(dzieci$zywnosc, dzieci$sklepik, > dzieci$sklslodycze, dzieci$sklnapojegazowane, dzieci$sklfastfood, > dzieci$sklsloneprzekaski, dzieci$sklmlekoiproduktymleczne, > dzieci$sklwodamineralnasoki, dzieci$sklkanapki, dzieci$sklwarzywaiowoce) > > ##################################################################### > > And about mistake in my function: > This is one row from my database where I get a mistake and I don't know why? > > sklepik; sklslodycze; sklnapojegazowane; > 1 1 1 > sklmlekoiproduktymleczne; sklfastfood; sklwodamineralnasoki; > 1 1 1 > sklsloneprzekaski; sklkanapki; sklwarzywaiowoce; > 1 0 1 > > Afetr call my function I get as a result: > dzieci$zywnosc[7590] > [1] 1 > But in my opinion I should get a value = 0.75 What is wrong? > > > -- > View this message in context: http://www.nabble.com/What-do-you-think-about- > my-function--tp23831687p23831687.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.