I need your help in solving an error related to vector name
I'm trying to define the function- ginv2 in r to convert a matrix output into fraction format but, I got an error related to 'names'.
`Error in make.unique(bi, sep = sep) : 'names' must be a character vector`
Here are the details of my goals and codes that I tried: I'm trying to achieve contrast coding for one of the predictor variables in the linear mixed effect model. I want to use the repeated contrast coding for a variable(AgeRange) with four levels.
*To code the repeated contrast in r, I followed 4 steps prescribed in D.J. Schad, et, al.(2020)*
##Step1~ specify hypothesis:
# HoII-I: -1.I + 1.II + 0.III + 0.IV = 0
# HoIII-II: 0.I - 1.II + 1.III + 0.IV = 0
# HoIV-III: 0.I + 0.II - 1.III + 1.IV = 0
##Step2~ create vector weights for all the hypotheses for this data
cIIvsI <- c(AgeRangeI=-1, AgeRangeII= +1, AgeRangeIII= 0, AgeRangeIV= 0)
cIIIvsII <- c(AgeRangeI= 0, AgeRangeII= -1, AgeRangeIII= +1, AgeRangeIV= 0)
cIVvsIII <- c(AgeRangeI= 0, AgeRangeII= 0, AgeRangeIII= -1, AgeRangeIV= +1)
##Step3~ extract and code the weights form all the hypothesis and convert into hypothesis matrix in R
RTacc.df2424$AgeRange <- factor(RTacc.df2424$AgeRange)
AgeRange.contrast <- rbind (
cIIvsI <- c(AgeRangeI=-1, AgeRangeII= +1, AgeRangeIII= 0, AgeRangeIV= 0),
cIIIvsII <- c(AgeRangeI= 0, AgeRangeII= -1, AgeRangeIII= +1, AgeRangeIV= 0),
cIVvsIII <- c(AgeRangeI= 0, AgeRangeII= 0, AgeRangeIII= -1, AgeRangeIV= +1))
fractions(t(AgeRange.contrast))
[,1] [,2] [,3]
AgeRangeI -1 0 0
AgeRangeII 1 -1 0
AgeRangeIII 0 1 -1
AgeRangeIV 0 0 1
##Step4 ~ define the generalize inverse to obtain a new contrast matrix XcRE.
##This is to achieve the generalised invers matrix that exactly tests the hypotheses coded which provides the code in fractions format
Before appliying generalise inverse to hypothesis matrix, we need to define the ginv2 function.
ginv2 <- function(x)
fractions(provideDimnames(ginv(x),
base = dimnames(x)[2:1]))
After defining ginv2, I passed the AgeRange contrast matrix to ginv2 function
ginv2(AgeRange.contrast)
This gives an error~~
Error in make.unique(bi, sep = sep) : 'names' must be a character vector
5.make.unique(bi, sep = sep)
4.provideDimnames(ginv(x), sep = "", base = dimnames(x)[2:1])
3..rat(x, cycles, max.denominator)
2.fractions(provideDimnames(ginv(x), sep = "", base = dimnames(x)[2:1]))
1.ginv2(AgeRange.contrast)
How to reslove this error issue? Any feedback and suggestions on defining the function correctly will be helpful.
Thank you in advance.