my input is from csv file: fname= 'test' csvdata = read.table(file=paste(fname,'.csv',sep=''),head=FALSE) x = csvdata$V1 y = csvdata$V2
I know that this group is not about php , but I managed to make function from above a lot faster, and I'm still cannot operate R at a sufficient level to recreate in in this language. Fit function in R that kinda resembles it is smooth.spline, but that function seems to go in a strange directions when data density becomes low But I think I would get desired behaviour in smooth.spline if for x axis I put matrix of simple 1,2,3 sequence here is revised php code: function smooth($in,$smooth=500) { if (count(current($in))!=2) exit('wrong array'); timer(); foreach($in as &$v) { $v[0] = (string)$v[0]; if (!isset($y[$v[0]])) { $y[$v[0]] = 0; $z[$v[0]] = 0; } $y[$v[0]] += $v[1]; ++$z[$v[0]]; } unset($in); ksort($y, SORT_NUMERIC); ksort($z, SORT_NUMERIC); $x = array_keys($z); $y = array_values($y); $z = array_values($z); $count = count($z); echo n.$count.' : '; for ($k=0;$k<$count;++$k) { if (!($k % 1000)) echo $k.' '; $u = $d = 0; $usum = $dsum = 0; $walk = 0; while (true) { ++$walk; if (isset($z[$k-$walk]) and $z[$k]+$z[$k-$walk]+$usum<$smooth) { $usum += $z[$k-$walk]; $u += $y[$k-$walk]; } else break; } $walk = 0; while (true) { ++$walk; if (isset($z[$k+$walk]) and $z[$k]+$z[$k+$walk]+$dsum<$smooth) { $dsum += $z[$k+$walk]; $d += $y[$k+$walk]; } else break; } $out[$k] = ($y[$k]+$u+$d)/($z[$k]+$usum+$dsum); } echo ' : '.timer().n; return array($x,$out); } -- View this message in context: http://r.789695.n4.nabble.com/what-is-this-averaging-function-called-has-R-a-built-in-function-for-it-tp3072826p3076215.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.