R语言在做信息份额模型过程中,代码运行报错显示cannot coerce type 'builtin' to vector of type 'character'
用的是ifrogs的packagezh中的pdshare函数
具体代码如下
pdshare <- function(x, override.lags = NULL, lag.max = 10) {
stopifnot(ncol(X)==2)
stopifnot(is.numeric(x[,1]))
stopifnot(is.numeric(x[,2]))
if (is.null(override.lags)){
if(lag.max<4) stop("Minimum lags should be 4")
} else {
if(override.lags<4) stop("Minimum lags should be 4")
}
cnames <- colnames(x)
pdshare.computation <- function(x, nlag) {
cointest <- ca.jo(x, K = 4, type = "eigen", ecdet = "const",
spec = "transitory")
k <- cointest@lag
vecm <- cajorls(cointest)
varm <- vec2var(cointest)
vma <- Psi(varm)
beta.ort <- as.vector(c(-cointest@V[2,1], cointest@V[1,1]))
alpha.ort <- as.vector(c(-cointest@W[2,1], cointest@W[1,1]))
aa <- bb <- cc <- dd <- 0
for (i in 1:(k-1)) {
aa <- aa + vecm$rlm$coefficients[2*i,1]
bb <- bb + vecm$rlm$coefficients[2*i+1,1]
cc <- cc + vecm$rlm$coefficients[2*i,2]
dd <- dd + vecm$rlm$coefficients[2*i+1,2]
}
gamma.1 <- matrix(c(1-aa, -bb, -cc, 1-dd), nrow = 2, ncol = 2, byrow
= TRUE)
b <- as.numeric(t(alpha.ort) %*% gamma.1 %*% beta.ort)
psi <- (beta.ort %*% t(alpha.ort))/b
f <- vma[,,1]
omega <- f %*% t(f)
psi <- t(psi[1,])
n <- psi %*% f
d <- psi %*% omega %*% t(psi)
list(ishares = c((n[, 1]^2)/d, (n[, 2]^2)/d), alpha.ort = alpha.ort,
omega = omega, lags = varm$p)
}
if (is.null(override.lags)) {
nlag <- MVARselect(X, lag.max = 10)$selection[1]
}
else {
nlag <- override.lags
}
tmp <- pdshare.computation(x, nlag)
is.original.ordering <- as.data.frame(tmp$ishares)
component.share <- as.data.frame(abs(tmp$alpha.ort)/sum(abs(tmp$alpha.ort)))
var.covar.matrix <- tmp$omega
lags.used <- tmp$lags
tmp <- pdshare.computation(x[,c(2,1)], nlag)
is.reversed.ordering <- as.data.frame(tmp$ishares)
rownames(var.covar.matrix) <- colnames(var.covar.matrix) <-
rownames(component.share) <- rownames(is.original.ordering) <- cnames
rownames(is.reversed.ordering) <- c(cnames[2], cnames[1])
colnames(is.original.ordering) <- c
"IS"
colnames(component.share) <- "CS"
list(is.original.ordering = is.original.ordering,
is.reversed.ordering = is.reversed.ordering,
component.share = component.share,
var.covar.matrix = var.covar.matrix,
lags.used = lags.used)
最终报错显示 Error in as.character(.Primitive("c")) :
cannot coerce type 'builtin' to vector of type 'character
应该是数据格式转换出了问题,但是不知道怎么解决,请各位指导
你把报错复制到记事本,嗯,还有代码都发给我
参考下下面的链接
https://cran.r-project.org/doc/manuals/r-release/R-data.html#Data-types