The squared multiple correlation of a variable with the remaining variables in a matrix is sometimes used as initial estimates of the communality of a variable.
SMCs are also used when estimating reliability using Guttman's lambda 6
The SMC is just 1 - 1/diag(R.inv) where R.inv is the inverse of R.
A correlation matrix or a dataframe. In the latter case, correlations are found.
if covar = TRUE and R is either a covariance matrix or data frame, then return the smc * variance for each item
a vector of squared multiple correlations. Or, if covar=TRUE, a vector of squared multiple correlations * the item variances
If the matrix is not invertible, then a vector of 1s is returned. Note, that I now take the left pseudo inverse so this is less likely to happen (if at all).
In the case of correlation or covariance matrices with some NAs, those variables with NAs are dropped and the SMC for the remaining variables are found. The missing SMCs are then estimated by finding the maximum correlation for that column (with a warning).