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.

Reply via email to