# [R] retrieve path analysis coefficients (package agricolae)

Peter Ehlers ehlers at ucalgary.ca
Mon May 24 13:10:09 CEST 2010

```On 2010-05-23 18:16, Zack Holden wrote:
> Dear list,
> I'd like to use path.analysis in the package agricolae in batch format on
> many files, retrieving the path coefficients for each run and appending them
> to a table. I don't see any posts in the help files about this package or
> the path.analysis package. I've tried creating an object out of the call to
> path.analysis, but no matter what I try, the function automatically prints
> the result. I'll be grateful for any assistance.
>

The beauty of R is that it is open source software giving

The function agricolae::path.analysis is very simple.
Unfortunately, it doesn't return anything and just prints
its results. But that's easy to fix. Here's a modified
version that just removes all the printing stuff and instead
returns the values of the path coefficients which you can
extract with '\$Coeff' (note the capital 'A' in path.Analysis):

path.Analysis <-
function (corr.x, corr.y)
{
if (ncol(corr.y) > 1)
corr.y <- t(corr.y)
Direct <- solve(corr.x, corr.y)
n <- ncol(corr.x)
Coeff <- corr.x
for (i in 1:n) {
for (j in 1:n) {
Coeff[i, j] <- Direct[j] * corr.x[i, j]
}
}
invisible(list('Coeff'=Coeff))
}

The loops aren't really necessary, so here's a simpler version:

path.Analysis <-
function (corr.x, corr.y)
{
if (ncol(corr.y) > 1)
corr.y <- t(corr.y)
Direct <- solve(corr.x, corr.y)
n <- ncol(corr.x)
Coeff <- t(corr.x * rep(Direct, n))
invisible(list("Coeff" = Coeff))
}

-Peter Ehlers